我在寫保存當前文檔時會執行一些處理的自定義Word模板。檢測用戶在Office2007中使用Word VBA選擇的保存功能
在Office2007中,要保存文檔,您可以使用「保存」和「另存爲」功能,並使用FileSave和FileSaveAs宏處理事件。
但是當用戶將鼠標懸停在SaveAs選項上時,將顯示其他子選項:另存爲文檔,作爲Word模板,作爲Word 97-2003文檔等。這些子選項似乎沒有他們自己的事件,但我想知道用戶何時使用它們。
所以我想出了使用DocumentBeforeSave事件的想法,但是我仍然需要弄清楚是否使用標準的Save/SaveAs選項或子選項進行保存。
我想過在Save/SaveAs函數中設置一個變量爲True,DocumentBeforeSave事件會檢查其中一個正常的保存方法是否發生,然後將該變量設置爲False。
但是在用不同的方法進行實驗之後,我無法弄清楚如何在ThisDocument和具有BeforeSave事件的類模塊之間傳遞一個變量的值。
任何想法?謝謝!
編輯:實施例的代碼不工作:
的ThisDocument:
Public pSSave As Boolean
Public Property Get SSave() As Boolean
SSave = pSSave
End Property
Public Property Let SSave(Value As Boolean)
pSSave = Value
End Property
Sub FileSave()
Me.SSave = True
If SSave = True Then
MsgBox "True"
End If
Application.ActiveDocument.Save
If SSave = True Then
MsgBox "True"
End If
End Sub
類模塊:
Private Sub App_DocumentBeforeSave(ByVal Doc As Document, SaveAsUI As Boolean, Cancel As Boolean)
If Application.ActiveDocument.SSave = False Then
MsgBox "False"
End If
End Sub
類模塊登記完成正確我不會粘貼她的代碼。
顯示的結果是True,False,True,理論上它應該是True,True。
我不確定我是否能幫助你...你真正的目標是什麼?允許還是不允許保存?控制過程?或者只是將對象的值傳遞給Class ...看起來你有一些想法,但問題還不清楚。您可以添加一些代碼以更好地瞭解您的需求... – 2013-04-11 06:57:08
我想在用戶使用子選項保存文檔時(不使用標準的「保存」和「另存爲」菜單項)檢測它並運行一段代碼。 – Steve 2013-04-11 07:47:18
你可以在你的類中創建額外的'property let \ get'屬性,並使用該屬性將任何值傳遞給你的類。或者在你的班級中添加額外的「公共變量」,這可能會使你通過這個值 – 2013-04-11 07:51:03