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ẽ chỉ cho bạn cách bỏ bảo vệ trang tính bằng mã hóa VBA.

Ví dụ

Ví dụ 1

Bảo vệ tấm đơn giản hơn 99% so với 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 “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 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 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 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”, vì vậy 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 “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, 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 đượ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 End Sub tiếp theo

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

Tình huống 1: Bạn đã từng 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 lỗi 1004: Run Time.

Để xử lý những lỗi này, chúng tôi có thể sử dụng tùy chọn "On Error GoTo Label". Đoạn mã dưới đây là một ví dụ về điều 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.

thú vị bài viết...