
onSave
したがって、VBA にはorイベントがないため、afterSave
ドキュメントを保存し、かつ Document-Location を更新する方法 (保存後) を見つけるのに苦労します。
したがって、このドキュメントが使用される最も一般的な方法は次のとおりです。
- テンプレートから新しいドキュメントを作成する
- ドキュメントを編集する
- ドキュメントを(ネットワーク内のどこかの場所に)保存する
上司は、自分の文書が多すぎて困惑しており、見つけるのに苦労しています。
そこで、この文書がどこに保存されているかを確認したいと考えています。
フッターに文書の場所フィールドを追加し、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 ポイントまではすべて機能し、少なくとも 1 回は保存されている必要があります。beforeSave
イベントは適切に保存される前であるため、location-path がないため、これは明らかなことですが... これを正しく行うにはどうすればよいですか?
答え1
このフィールドは印刷プレビューによって更新されます。そこで私が使用するトリックは、AutoOpen マクロで印刷プレビューを作成することです。
Sub AutoOpen()
Application.Run MacroName:="MathTypeCommands.UIWrappers.FilePrintPreview"
ActiveDocument.ClosePrintPreview
End Sub