Word: обновить поле расположения документа, которое еще не было сохранено

Word: обновить поле расположения документа, которое еще не было сохранено

Так как в VBA нет события onSaveor afterSave, у меня возникли проблемы с поиском способа сохранить документ и обновить местоположение документа (после его сохранения).

Таким образом, наиболее распространенный способ использования этого документа:

  1. создать новый документ из шаблона
  2. редактировать документ
  3. сохранить документ как (какое-то место в сети)

Мой босс запутался во всех своих документах и ​​не может найти их снова.
Поэтому он хочет узнать, где хранятся эти документы.
Я добавил поле расположения документа в нижний колонтитул и добавил этот код в проект 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 происходит до того, как оно будет сохранено должным образом, и поэтому нет location-path... Что я могу сделать, чтобы сделать это правильно?

решение1

Это поле будет обновлено предварительным просмотром печати. ​​Поэтому трюк, который я использую, — создание предварительного просмотра печати в макросе AutoOpen.

Sub AutoOpen()
    Application.Run MacroName:="MathTypeCommands.UIWrappers.FilePrintPreview"
    ActiveDocument.ClosePrintPreview
End Sub

Связанный контент