因此,由于 VBA 没有onSave
或afterSave
事件,我很难找到保存文档和更新文档位置(保存后)的方法。
因此,此文档最常见的使用方式是:
- 从模板创建新文档
- 編輯文檔
- 将文档另存为(网络中的某个位置)
我的老板被他所有的文件弄得一头雾水,很难再找到它们。
所以他想看看这些文件保存在哪里。
我在页脚中添加了文档位置字段,并在 VBA 项目中添加了此代码。
Sub AutoOpen()
'
' AutoOpen Macro
'
'
Dim aStory As Range
Dim aField As Field
For Each aStory In ActiveDocument.StoryRanges
For Each aField In aStory.Fields
aField.Update
Next aField
Next aStory
' set document as unchanged (prevents save dialog popping up when closing)
' further edits will set this back to false and restore
' the save dialog on close
ActiveDocument.Saved = True
End Sub
Private Sub wdApp_DocumentBeforeSave(ByVal Doc As Document, SaveAsUI As Boolean, Cancel As Boolean)
ActiveWindow.ActivePane.View.Type = wdPrintView
Application.ScreenUpdating = True
Selection.WholeStory
ActiveDocument.Fields.Update
ActiveDocument.Save
End Sub
一切正常,直到 activeDocument.Save 点,并且必须至少保存一次。
这也是显而易见的,因为我假设 beforeSave 事件发生在正确保存之前,因此没有位置路径...我该怎么做才能解决这个问题?
答案1
此字段将通过打印预览进行更新。因此,我使用的技巧是在 AutoOpen 宏中创建打印预览。
Sub AutoOpen()
Application.Run MacroName:="MathTypeCommands.UIWrappers.FilePrintPreview"
ActiveDocument.ClosePrintPreview
End Sub