要實現限制文件的使用次數,想來應該在某個地方存儲文檔已用的次數,并且在文檔每被使用一次這個使用次數就得發生相應的更改。如果這個思路正確的話,我們就可以利用文檔屬性的某個位置來實現這一想法,故有了以下兩種形式:
一、利用自定義屬性:因為我們可以自定義數字型的屬性,這一點非常符合我們的需求
先用一行代碼ThisWorkbook.CustomDocumentProperties.Add Name:="open_times",LinkToContent:=False,Type:=msoPropertyTypeNumber,Value:=10來定義一個名為open_times的數字型屬性、初始值為10。當然也可以手動定義
然后在文檔的打開事件中寫入:
Private Sub Workbook_Open()
If ThisWorkbook.CustomDocumentProperties("open_times")1 Then MsgBox"可用次數已小于1"
Else ThisWorkbook.CustomDocumentProperties("open_times")=ThisWorkbook.CustomDocumentProperties("open_times")-1 End If End Sub
注:1、這里我們只討論在必須啟用宏的情況下。2、這里只寫了打開文檔的次數,要想保存、修改等等,請作相應改動。3、限制的代碼請自行修改,此處只寫了MsgBox"可用次數已小于1"這么一個提示信息
二、上一個方法自然、直觀,但不隱蔽。再利用內置文檔屬性直觀上不容易發現的:
先用一行代碼ThisWorkbook.BuiltinDocumentProperties.Item("comments")=""將備注清空,然后文檔每打開一次其備注增加一個空格,再判斷其長度,當長度達到我們的限制要求時,作相應操作:
Private Sub Workbook_Open()
ThisWorkbook.BuiltinDocumentProperties.Item("comments")=ThisWorkbook.BuiltinDocumentProperties.Item("comments")&""
If Len(ThisWorkbook.BuiltinDocumentProperties.Item("comments"))10 Then MsgBox"已超過可用次數"
End If End Sub
注:同前,限制的代碼請自行修改,此處只寫了一個提示信息