Patrick tự hỏi làm thế nào để ngăn Excel mở sổ làm việc trong dạng xem được Bảo vệ. Anh ta muốn tệp mở ở chế độ xem Bình thường để bất kỳ ai cũng có thể mở, đọc và chỉnh sửa tệp.

Câu trả lời hoàn toàn phụ thuộc vào ý nghĩa của “Chế độ xem được bảo vệ”. Nếu bạn muốn các trang tính không được bảo vệ, điều đó tương đối dễ thực hiện thông qua macro. Nếu bạn thực sự đang nói về thuật ngữ Excel “Chế độ xem được bảo vệ”, thì đó là một tình huống hoàn toàn khác.

Nếu bạn muốn đảm bảo rằng sổ làm việc không được bảo vệ để nó có thể được chỉnh sửa sau khi mở, thì một macro đơn giản như sau có thể thực hiện thủ thuật:

Private Sub Workbook_Open()

ThisWorkbook.Unprotect End Sub

Tất nhiên, điều này không bỏ bảo vệ các trang tính riêng lẻ. Điều đó liên quan đến một vài bước nữa vì bạn cần phải duyệt qua từng trang tính trong sổ làm việc. Các macro sau nên được đặt trong mô-đun ThisWorkbook cho sổ làm việc có trang tính bạn muốn không được bảo vệ:

Private Sub Workbook_BeforeClose(Cancel As Boolean)

' Reprotect sheets that were protected on open workbook     Call ReprotectSheets ' Save changes in ThisWorkbook     ThisWorkbook.Save End Sub
Private Sub Workbook_Open()

' Unprotect all sheets in this workbook     Call UnprotectAllSheets End Sub

Lưu ý rằng các macro làm được nhiều việc hơn là gọi các macro khác hoạt động thực sự. Các macro khác này có thể được đặt trong một mô-đun chuẩn trong sổ làm việc:

Public arrProtectedSheets()



Sub ReprotectSheets()

' Reprotect worksheets that were protected on WorkbookOpen     Dim i As Integer

For i = LBound(arrProtectedSheets) To UBound(arrProtectedSheets)

ThisWorkbook.Worksheets(arrProtectedSheets(i)).Protect     Next i End Sub
Sub UnprotectAllSheets()

' Unprotect all worksheets in this workbook     Dim wks As Object     Dim i As Integer

i = 0     For Each wks In ThisWorkbook.Sheets         If IsSheetProtected(wks) Then             ' Remember names of protected sheets in order             ' to reprotect them on WorkbookClose             ReDim Preserve arrProtectedSheets(i)

arrProtectedSheets(i) = wks.Name             i = i + 1             ' Unprotect sheet             wks.Unprotect         End If     Next wks End Sub
Private Function IsSheetProtected(ByRef wks As Excel.Worksheet) As Boolean ' Function returns TRUE If Worksheetsheet Is Protected     With wks         IsSheetProtected = (.ProtectContents Or _           .ProtectScenarios Or .ProtectDrawingObjects)

End With End Function

Ý tưởng đằng sau macro UnprotectAllSheets là nó bước qua từng trang tính trong sổ làm việc và nếu nó được bảo vệ (được xác định trong macro IsSheetProtected), tên của trang tính sẽ được lưu trữ trong một mảng. Nội dung của mảng sau đó được sử dụng trong macro ReprotectSheets để một lần nữa bảo vệ các trang tính đó. Tất nhiên, cách tiếp cận này giả định rằng không có mật khẩu nào được liên kết với bất kỳ trang tính nào được bảo vệ.

Nếu bạn thực sự muốn đảm bảo rằng “Chế độ xem được bảo vệ” thực sự

bị tắt, đó là một câu chuyện khác. Cài đặt cho Chế độ xem được Bảo vệ được kiểm soát trên cơ sở từng hệ thống trong Trung tâm Tin cậy. Bạn có thể xem cài đặt bằng cách làm theo các bước sau:

  1. Bấm Bảo mật Macro trong nhóm Mã. Excel sẽ hiển thị hộp thoại Trung tâm tin cậy.

  2. Ở phía bên trái của hộp thoại, nhấp vào Dạng xem được Bảo vệ. (Xem Hình 1.)

Cài đặt Chế độ xem Bảo vệ thực tế có sẵn tùy thuộc vào phiên bản Excel bạn đang sử dụng. Như đã đề cập, các cài đặt này được kiểm soát ở cấp hệ thống; chúng không được xử lý trên cơ sở từng sổ làm việc. Kết quả là chúng không thể bị mã macro phá vỡ. Nếu chúng có thể, thì nó sẽ khiến một hệ thống hoàn toàn dễ bị tấn công bởi bất kỳ mã nào trong sổ làm việc đang được mở — chúng ta sẽ quay lại thời kỳ của vi-rút macro phổ biến với một số phiên bản trước của sản phẩm Office.

Có thể tìm thấy thông tin bổ sung về cách hoạt động của cài đặt Chế độ xem được Bảo vệ trên trang web này của Microsoft:

https://support.office.com/en-us/article/what-is-protected-view-d6f09ac7-e6b9-4495-8e43-2bbcdbcb6653?ocmsassetID=HA010355931&CorrelationId=fce5243e-6c41-4865-89e9-530f125ea252&ui=en-US&rs=en-US&ad=US

Sổ làm việc có mở trong Dạng xem được Bảo vệ hay không phụ thuộc vào cài đặt hệ thống của người dùng. Điều này có nghĩa là quyền kiểm soát những gì mở ra là hoàn toàn tùy thuộc vào người dùng cá nhân và không thể bị “ép buộc” bởi tác giả sổ làm việc. Tuy nhiên, có nhiều cách để giảm thiểu tác động của điều này và chúng phải làm với sự tin tưởng. Lưu ý rằng ở bên trái của hộp thoại Trung tâm tin cậy có ba cài đặt kiểm soát điều này liên quan đến sổ làm việc:

Nhà xuất bản đáng tin cậy. * Sổ làm việc từ bất kỳ nhà xuất bản nào được liệt kê trong khu vực này đều đáng tin cậy và sẽ mở trực tiếp, bỏ qua Chế độ xem được Bảo vệ.

Vị trí đáng tin cậy. * Sổ làm việc được lưu trữ ở các vị trí được liệt kê trong khu vực này là đáng tin cậy và sẽ mở trực tiếp, bỏ qua Dạng xem được Bảo vệ.

Tài liệu đáng tin cậy. * Sổ làm việc riêng lẻ được lưu ý trong khu vực này được tin cậy và sẽ mở trực tiếp, bỏ qua Dạng xem được Bảo vệ.

Đối với sổ làm việc của bạn, khi đó, để bỏ qua Dạng xem được Bảo vệ, bạn cần phải là một nhà xuất bản đáng tin cậy, sổ làm việc cần được lưu trữ ở một vị trí đáng tin cậy hoặc nó cần được ghi chú trên hệ thống như một tài liệu đáng tin cậy.

Tất cả các cài đặt này, một lần nữa, nằm dưới sự kiểm soát của người dùng và không thể sửa đổi thông qua mã macro.

_Lưu ý: _

Nếu bạn muốn biết cách sử dụng các macro được mô tả trên trang này (hoặc trên bất kỳ trang nào khác trên trang ExcelTips), tôi đã chuẩn bị một trang đặc biệt bao gồm thông tin hữu ích.

ExcelTips là nguồn của bạn để đào tạo Microsoft Excel hiệu quả về chi phí.

Mẹo này (12873) áp dụng cho Microsoft Excel 2007, 2010, 2013, 2016, 2019 và Excel trong Office 365.