Так как VBA не имеет onSave или 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

Все работает до активного документа.Точка сохранения, и она должна быть сохранена как минимум один раз.
Что также является своего рода obviuos, потому что я предполагаю, что событие beforeSave происходит до того, как оно будет сохранено должным образом, и поэтому нет пути к местоположению ... Что я могу сделать, чтобы получить эту вещь правильно?

1 ответ1

1

Это поле будет обновлено при предварительном просмотре. Итак, хитрость, которую я использую, заключается в создании предварительного просмотра печати в макросе AutoOpen.

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .