俞木發
在Word中我們可以對選擇的文本設置字體隱藏效果,這樣在文檔窗口中就不會顯示指定的內容,并且可以通過“審閱”組件對文檔進行保護,這樣又可以阻止閱讀的用戶手動取消隱藏效果。這些操作均可以通過VBA腳本自動完成,并且在VBA中可以通過“If Now()”語句對執行操作的時間進行設定。因此,我們通過“VBA腳本進行時間判斷→添加隱藏字體代碼→添加文檔保護密碼”的一系列步驟,就可以實現文檔定時“銷毀”且用戶無法取消隱藏的效果。具體流程如圖所示(圖2)。
從圖2的流程介紹可以看到關鍵操作是添加字體隱藏效果和添加保護,為了方便大家對這兩個操作有更直觀的理解,我們可以先在Word中手動進行操作預覽。
在Word中打開需要處理的文檔,選中需要隱藏的內容,按下“Ctrl+D”快捷鍵調出字體設置窗口,按提示勾選“效果”選項下的“隱藏”,這樣選擇的文本內容就會自動消失了(圖3)。這就相當于將文檔字體的顯示屬性設置為“隱藏”,在文檔中就不會顯示隱藏的文本了。
繼續依次點擊“審閱→保護→限制編輯”菜單選項,接著在右側打開的限制編輯窗格中操作:在“1.格式化限制”下勾選“限制對選定的樣式設置格式”;在“2.編輯限制”下勾選“僅允許在文檔中進行此類型的編輯:”,在下面的下拉列表中選擇“填寫窗體”;然后點擊下方的“是,啟動強制保護”,最后按提示設置保護密碼(圖4)。這樣不輸入密碼,用戶就無法打開圖3所示窗口取消“隱藏”的勾選。


上述手動操作的目的是為了向大家展示最終隱藏的效果。為了可以實現定期銷毀文檔,我們需要利用VBA,按照圖2的提示,添加對應的代碼操作即可(代碼可到“https:fishare.weiyun.com/TfHt6xx8”下載)。
返回Word文檔窗口,手動取消文檔保護和隱藏效果,然后按下“Alt+F11”快捷鍵打開VBA編輯窗口,在左側的窗格中依次展開“Proiect(當前文檔名稱)→Microsoft Word對象→ThisDocument”,雙擊“ThisDocument”并在右側打開的代碼窗格中粘貼上述的代碼(圖5)。
主要代碼解釋:
If Now()>=DateSerial("2021","04","01"):表示使用IF語句將當前日期和2021.04.01進行比較,如大于這個時間則執行下面的操作。在實際使用中請自行更改日期。
MsgBox“產品報價已過期”:表示如果當前日期大于2021.04.01,則彈出提示框顯示“”產品報價已過期”。
Selection Font Hidden=True:將選擇內容字體的效果設置為隱藏,即自動執行圖3所示的操作(不同的是代碼默認全選文檔的內容)。
Protect wdAllowOnlyFormFields,True,"123":表示將文檔的編輯權限設置為“wdAllowOnlyFormFields”,即自動執行圖4所示的操作,同時將保護密碼設置為“123”。
完成代碼的粘貼后,在左側的窗格內選中“ThisDocument”并右擊,然后選擇“Project屬性”,在打開的工程屬性窗口中切換到“保護”選項卡,按提示設置密碼。這個密碼用來防止用戶查看VBA代碼,從而知道隱藏的原理和查看解鎖編輯的密碼(圖6)。
完成上述的設置后,將文檔保存為“啟用宏的Word文檔(*.docm)”,然后就可以發給各個業務部門了。當使用者每次打開這個文檔后,后臺的VBA腳本都會自動將打開文檔時的日期和2021.04.01進行比較,如果日期小于該日期,文檔查看是正常的;如果日期大于該日期(比如2021.04.02打開文檔),那么打開該文檔后會彈出“產品報價已過期”的提示框(圖7)。
用戶點擊消息框中的“確定”按鈕后,后臺腳本便會自動將文檔內容的字體全部設置為“隱藏”,用戶完全看不到文檔的內容,同時也無法對文檔進行任何編輯(當然也無法執行圖3窗口所示的取消“隱藏”效果前的勾選)(圖8)。