Stefano đang gặp một vấn đề trong công ty của anh ấy, nơi mọi người thường sao chép sổ làm việc từ máy chủ sang máy tính của riêng họ, thực hiện các thay đổi trong sổ làm việc và sau đó in sổ làm việc. Anh ta muốn thực thi rằng chỉ có sổ làm việc gốc mới được phép in, vì vậy anh ta tự hỏi liệu có cách nào để cấm in trừ khi sổ làm việc là một trên máy chủ.

Không có cách bản địa nào để làm điều này trong Word. Nếu muốn, bạn có thể tạo một macro thực hiện hai việc sau:

  1. Kiểm tra đường dẫn cho tài liệu hiện tại. Nếu đường dẫn là bất kỳ thứ gì ngoại trừ đường dẫn cho máy chủ của bạn, hãy cấm in

Đây là một ví dụ về một macro như vậy. Bạn nên đặt phiên bản cụ thể này trong mô-đun ThisWorkbook; nó sẽ tự động chạy mỗi khi người dùng chọn in.

Private Sub Workbook_BeforePrint(Cancel As Boolean)

Dim sFile As String

sFile = "\\Server.name\folder\path\My file name.xlsm"



If ThisWorkbook.FullName <>  sFile Then         MsgBox "Printing only possible with server copy"

Cancel = True     End If End Sub

Lưu ý rằng biến sFile được đặt để chứa đường dẫn đầy đủ đến sổ làm việc (đến nơi đặt sổ làm việc trên máy chủ công ty). Nếu tên của sổ làm việc hiện tại không khớp với tên này, thì tính năng in sẽ bị tắt.

Có một vấn đề tiềm ẩn với loại macro này và nó liên quan đến đường dẫn đến tệp. Có thể đường dẫn cho máy chủ có thể khác nhau tùy theo từng người dùng. Macro mẫu kiểm tra một đường dẫn bao gồm UNC (Quy ước đặt tên chung), nhưng không phải tất cả các đường dẫn đều có thể hoạt động theo cách này. Ví dụ: người dùng có thể có thư mục trên máy chủ được ánh xạ tới ký tự ổ đĩa. Trên một hệ thống, đường dẫn có thể là g: / myserver / myfolder / và trên một hệ thống khác, nó có thể là z: / myserver / myfolder /.

Vĩ mô không thể bù đắp đáng tin cậy cho điều này.

Bạn có thể giải quyết vấn đề này bằng một cách tiếp cận công nghệ thấp. Đầu tiên, đặt một tệp văn bản nhỏ (được tạo bằng Notepad) vào cùng một thư mục trên máy chủ với sổ làm việc. Nó không thực sự quan trọng với những gì tệp văn bản chứa. Sau đó, thêm macro này vào mô-đun ThisWorkbook của bạn:

Private Sub Workbook_BeforePrint(Cancel As Boolean)

Dim sPath As String     Dim sFile As String

sPath = ThisWorkbook.Path     sFile = sPath & "\" & "TestFile.txt"



If Dir(sFile) = "" Then         MsgBox "Printing only possible with server copy"

Cancel = True     End If End Sub

Những gì macro làm là xác định đường dẫn của sổ làm việc hiện đang mở. Sau đó, tên này được thêm vào tên của tệp văn bản nhỏ mà bạn đã đặt trong cùng thư mục với sổ làm việc. (Trong trường hợp này, tôi đã đặt tên cho tệp này là TestFile.txt.) Sau đó, lệnh Dir được sử dụng để xem tệp có tồn tại hay không. Nếu nó không tồn tại, thì quá trình in sẽ bị hủy.

Một giải pháp bao trùm hơn có thể là sử dụng cái mà Microsoft gọi là IRM (Quản lý Quyền Thông tin). Giải pháp này, rất thích hợp để sử dụng trong môi trường công ty, cho phép bạn kiểm soát những gì mọi người có thể và không thể làm với tài liệu của bạn. Một nơi tốt để bắt đầu tìm hiểu về IRM là đây:

https://support.office.com/en-us/article/information-rights-management-in-office-c7a70797-6b1e-493f-acf7-92a39b85e30c

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

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