Shay làm việc với một tổ chức tình nguyện và họ đã phát triển một sổ làm việc Excel dành riêng cho các tình nguyện viên của họ. Họ không muốn nó được sao chép hoặc chia sẻ với các cá nhân bên ngoài, vì vậy Shay tự hỏi liệu có cách nào để bảo vệ sổ làm việc để nó chỉ hoạt động cho một máy tính cụ thể và không cho những máy khác.

Có nhiều cách để cố gắng thực thi bảo mật của sổ làm việc, nhưng có những cân nhắc cần tính đến trước khi giải quyết theo cách tốt nhất.

Hiểu rằng bất kỳ cách tiếp cận nào cũng sẽ gây bất tiện cho người dùng ở mức độ này hay mức độ khác. Ngoài ra, cách tiếp cận bạn thực hiện có thể phụ thuộc vào việc người dùng chỉ sử dụng mạng nội bộ của bạn hay họ là tình nguyện viên không kết nối với mạng của bạn.

Một cách dễ dàng để bắt đầu là chỉ cần bảo vệ sổ làm việc bằng mật khẩu và sau đó cho các tình nguyện viên của bạn biết mật khẩu. Hạn chế hai lần của điều này là bất kỳ mật khẩu nào bạn chuyển cho tình nguyện viên của mình sẽ tiếp tục hoạt động sau khi họ không còn là tình nguyện viên và cho bất kỳ ai mà tình nguyện viên có thể chuyển sổ làm việc cho họ. Điều này đúng ngay cả khi bạn đặt mật khẩu riêng cho từng tình nguyện viên.

Bất kỳ cách tiếp cận nào khác sẽ dựa vào việc bổ sung các macro vào sổ làm việc.

Một cách tuyệt vời là macro kiểm tra tên của máy tính mà sổ làm việc đang được mở. Đây là một ví dụ về macro như vậy:

Private Sub Workbook_Open()

Dim sComputerName As String     Dim sPossible As String     Dim sTemp As String

sPossible = "[NEWDELL][Computer1][Order Entry][Dan's System]"

sPossible = sPossible & "[Computer2][Computer3]"



sComputerName = Environ("computername")

sTemp = "[" & sComputerName & "]"



If InStr(sPossible, sTemp) Then         MsgBox "Welcome to the workbook."

Else         MsgBox "You are not authorized to open this workbook."

Workbooks(ActiveWorkbook.Name).Close SaveChanges:=False     End If End Sub

Ý tưởng đằng sau macro là bạn sẽ xác định, trong chuỗi sPossible, tên của mỗi máy tính mà nó được phép mở sổ làm việc. Tất cả những gì bạn cần làm là đảm bảo rằng bạn nhận được chính xác tên máy được viết chính xác và đặt chúng trong dấu ngoặc vuông trong chuỗi sPossible. Hàm Environ trả về tên máy tính thực, nó được đặt trong biến sTemp trong dấu ngoặc và sau đó hàm InStr được sử dụng để xem nó có nằm trong danh sách các máy có thể sử dụng hay không.

Nếu đúng, thì một hộp thông báo sẽ hiển thị; nếu không, thì một hộp thông báo sẽ hiển thị và sổ làm việc được đóng mà không lưu bất kỳ thay đổi nào.

Nếu bạn muốn thứ gì đó an toàn hơn một chút, bạn cũng có thể sử dụng chức năng Môi trường để trả về “http://username-password.com/[tên người dùng]”

giá trị này sẽ cung cấp cho bạn tên người dùng cho tài khoản đang được sử dụng trên máy tính.

Cách tiếp cận macro này tương đối đơn giản, nhưng nó yêu cầu phải biết tên máy tính (và / hoặc tên người dùng) trước khi nó hoạt động bình thường. Nó cũng giả định rằng người dùng không biết đủ về Excel để bỏ qua các macro bằng cách giữ phím Shift khi chương trình bắt đầu. Nếu bạn nghi ngờ người dùng có thể biết nhiều điều đó, bạn sẽ cần thực hiện thêm các bước, chẳng hạn như sau:

  • Đảm bảo rằng một trang tính hiển thị trong sổ làm việc. Tất cả các bảng tính khác phải được “ẩn” rất nhiều nên người dùng không thể hiển thị chúng bằng các bước bình thường.

  • Nếu macro xác định người dùng được phép, hãy ẩn trang tính hiển thị duy nhất và hiển thị tất cả các trang tính “rất ẩn”.

  • Khi đóng sổ làm việc, hãy đảo ngược quy trình và ẩn tất cả các trang tính (đặt thuộc tính Hiển thị của từng trang thành xlSheetVeryHidden) và làm cho trang tính hiển thị lại.

Sử dụng cách tiếp cận này đảm bảo rằng ngay cả khi người dùng tắt macro (bằng cách giữ phím Shift trong khi khởi động), họ không thể truy cập trang tính vì cần có macro để hiển thị chúng.

Bạn có thể sử dụng một biến thể của phương pháp trên để thay vì dựa vào chức năng Môi trường, bạn có thể kiểm tra macro về sự hiện diện của tệp được xác định trước ở một vị trí cụ thể trên hệ thống.

Tất nhiên, điều này có nghĩa là bạn cần có cách để sử dụng hệ thống trước thời hạn để đặt tệp thích hợp vào đúng vị trí.

Cuối cùng, bất kỳ cách tiếp cận dựa trên macro nào bạn chọn, bạn nên đảm bảo rằng dự án VBA cho sổ làm việc được bảo vệ bằng mật khẩu. Điều này sẽ ngăn ai đó truy cập và xem mã macro của bạn để tìm ra điều gì đang xảy ra với biện pháp bảo vệ.

Có một điều khác mà bạn luôn cần ghi nhớ khi cố gắng bảo vệ sổ làm việc của mình: Bất kỳ biện pháp bảo vệ nào bạn đặt ra luôn có thể bị phá vỡ với đủ kiến ​​thức và sự kiên nhẫn. Nếu người dùng của bạn không phải là người sành sỏi về mặt kỹ thuật, thì bạn sẽ không gặp vấn đề gì. Tuy nhiên, nếu họ biết nhiều về Excel và macro, thì tất cả các cược sẽ tắt.

_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 (13666) áp dụng cho Microsoft Excel 2007, 2010, 2013, 2016, 2019 và Excel trong Office 365.