
Portanto, como o VBA não possui um evento onSave
or afterSave
, tenho problemas para encontrar uma maneira de salvar meu documento E atualizar o local do documento (depois de salvo).
Portanto, a maneira mais comum de usar este documento é:
- criar novo documento a partir do modelo
- editar documento
- salvar documento como (algum local na rede)
Meu chefe está confuso com todos os seus documentos e está tendo problemas para encontrá-los novamente.
Então ele quer ver onde esses documentos estão salvos.
Adicionei o campo de localização do documento no rodapé e adicionei este código no projeto 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
Tudo funciona até o ponto activeDocument.Save, e deve ser salvo antes pelo menos uma vez.
O que é meio óbvio também, porque presumo que o evento beforeSave seja antes de ser salvo corretamente e, portanto, não há caminho de localização ... O que posso fazer para acertar?
Responder1
Este campo será atualizado por uma visualização da impressão. Portanto, o truque que uso é criar uma visualização de impressão na macro AutoOpen.
Sub AutoOpen()
Application.Run MacroName:="MathTypeCommands.UIWrappers.FilePrintPreview"
ActiveDocument.ClosePrintPreview
End Sub