VBA UnProtect Trang tính | Sử dụng mã VBA để bỏ bảo vệ trang tính Excel

Excel VBA Unprotect Sheet

Có những trường hợp chúng tôi bảo vệ trang tính của mình để ngăn người dùng thao tác trên trang tính. Trong khi bảo vệ trang tính, chúng tôi thường duy trì cùng một mật khẩu. Trong bài viết này, chúng tôi sẽ hướng dẫn bạn cách bỏ bảo vệ trang tính bằng mã hóa VBA.

Các ví dụ

Bạn có thể tải xuống Mẫu VBA Unprotect Sheet Excel này tại đây - Mẫu VBA Unprotect Sheet Excel

Ví dụ 1

Việc bỏ bảo vệ trang tính đơn giản hơn 99% so với việc bảo vệ chúng, chúng tôi chỉ cần mật khẩu để bỏ bảo vệ trang tính.

Điều đầu tiên chúng ta cần làm là đề cập đến tên trang tính mà chúng ta sẽ bỏ bảo vệ. Ví dụ: nếu bạn đang tìm cách bỏ bảo vệ trang tính có tên là “Dữ liệu bán hàng” thì mã VBA của bạn sẽ như thế này.

Bảng tính (“Dữ liệu bán hàng”)

Sau đó truy cập vào phương thức Unprotect.

Như chúng ta có thể thấy trong hình trên, chúng ta không thấy bất kỳ loại danh sách IntelliSense nào để hỗ trợ chúng ta. Điều này làm cho công việc khó khăn hơn, đặc biệt là đối với người mới học.

Để khắc phục điều này, tôi thường dựa vào việc khai báo một biến VBA là “Trang tính”.

Mã:

 Sub Unpretect_Example1 () Dim Ws As Worksheet End Sub 

Bây giờ, hãy đặt biến đã khai báo vào trang tính tương ứng.

Mã:

 Sub Unpretect_Example1 () Dim Ws As Worksheet Set Ws = Worksheets ("Dữ liệu bán hàng") End Sub 

Bây giờ sử dụng một biến để truy cập vào tất cả các thuộc tính và phương thức của biến đã khai báo.

Như bạn thấy trong hình trên, chúng ta có thể truy cập vào tất cả các thuộc tính và phương thức. Chọn phương pháp “Bỏ bảo vệ” từ danh sách IntelliSense.

Nó đang yêu cầu mật khẩu để bỏ bảo vệ Trang tính. Tôi đã đặt mật khẩu là “Excel @ 1234” nên tôi sẽ cung cấp mật khẩu giống như vậy.

Thao tác này sẽ bỏ bảo vệ trang tính có tên là “Dữ liệu bán hàng”.

Mã:

 Sub Unpretect_Example1 () Dim Ws As Worksheet Set Ws = Worksheets ("Dữ liệu Bán hàng") Ws.Unprotect Password: = "Excel @ 1234" End Sub 

Nếu không có mật khẩu thì chúng ta chỉ cần sử dụng phương pháp “Unprotect” và bỏ qua tham số “Mật khẩu”.

Mã:

 Sub Unpretect_Example1 () Dim Ws As Worksheet Set Ws = Worksheets ("Sales Data") 'Thay đổi tên trang tính theo yêu cầu của bạn Ws.Unprotect' Nếu không có mật khẩu, chỉ cần chuyển phương thức "UnProtect" Kết thúc Sub 

Nếu có bất kỳ mật khẩu nào thì chúng ta cần nhập mật khẩu trong dấu ngoặc kép. Mật khẩu có phân biệt chữ hoa chữ thường vì vậy hãy nhớ chúng cẩn thận.

Ví dụ # 2 - Bỏ bảo vệ tất cả các trang tính Excel chỉ với một cú nhấp chuột

Chúng tôi đã thấy cách bỏ bảo vệ trang tính cụ thể. Hãy tưởng tượng bạn có nhiều trang tính và tất cả các trang tính đều được bảo vệ bằng cùng một mật khẩu, khi đó chúng ta không thể tiếp tục viết mã cho từng trang tính riêng biệt.

Trong những trường hợp này, chúng ta cần sử dụng các vòng lặp để lặp qua tập hợp các đối tượng trang tính và bỏ bảo vệ chúng một cách dễ dàng.

Đoạn mã dưới đây sẽ lặp qua tất cả các trang tính và bỏ bảo vệ trang tính.

Mã:

Sub Unpretect_Example2 () Dim Ws As Worksheet Cho Mỗi W Trong ActiveWorkbook.Worksheets Ws.Unprotect Password: = "Excel @ 1234" 'Thay đổi mật khẩu như bạn đã đề cập trong khi bảo vệ chúng. Ws kết thúc tiếp theo phụ

Ví dụ # 3 - Các tình huống đặc biệt

Tình huống 1: Bạn đã bao giờ tưởng tượng khi mật khẩu được cung cấp bị sai. Khi mật khẩu được cung cấp sai, chúng tôi sẽ nhận được 1004: Lỗi thời gian chạy.

Để xử lý những lỗi này, chúng ta có thể sử dụng tùy chọn “On Error GoTo Label”. Mã dưới đây là ví dụ tương tự.

Mã:

Sub Unpretect_Example3 () Dim Ws As Worksheet Cho Mỗi W Trong ActiveWorkbook.Worksheets On Error GoTo Errormessage Ws.Unprotect Password: = "Excel @ 1234" 'Thay đổi mật khẩu như bạn đã đề cập trong khi bảo vệ chúng. Lỗi: MsgBox "Sai mật khẩu" Tiếp theo Kết thúc Sub

Đoạn mã trên sẽ hiển thị một hộp thông báo đẹp cho biết “Mật khẩu sai”.

Tình huống 2: Khi trang tính được bảo vệ mà không có mật khẩu và nếu bạn cung cấp mật khẩu ngẫu nhiên, nó sẽ vẫn bỏ bảo vệ trang tính mà không hiển thị bất kỳ loại lỗi nào.

Tình huống 3: Khi trang tính được bảo vệ bằng mật khẩu nhưng nếu bạn không cung cấp bất kỳ mật khẩu nào thì VBA sẽ bật lên dưới dạng hộp nhập mật khẩu để nhập mật khẩu.

Trong hộp nhập ở trên, chúng ta cần nhập mật khẩu của mình để bỏ bảo vệ trang tính. Nếu bạn nhấp vào nút Hủy, nó sẽ thoát khỏi quy trình con VBA mà không hiển thị bất kỳ điều gì trừ khi có bất kỳ hộp thông báo người dùng nào.


$config[zx-auto] not found$config[zx-overlay] not found