
Entonces, como VBA no tiene un evento onSave
o, afterSave
tengo problemas para encontrar una manera de guardar mi documento Y actualizar la ubicación del documento (después de haberlo guardado).
Entonces, la forma más común en que se utilizará este documento es:
- crear un nuevo documento a partir de una plantilla
- editar documento
- guardar el documento como (alguna ubicación en la red)
Mi jefe está confundido con todos sus documentos y tiene problemas para encontrarlos nuevamente.
Entonces quiere ver dónde se guardan estos documentos.
Agregué el campo de ubicación del documento en el pie de página y agregué este código en el proyecto 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
Todo funciona hasta el punto activeDocument.Save y debe guardarse antes al menos una vez.
Lo que también es un poco obvio porque supongo que el evento beforeSave es antes de que se guarde correctamente y, por lo tanto, no hay una ruta de ubicación... ¿Qué puedo hacer para hacer esto bien?
Respuesta1
Este campo se actualizará mediante una vista previa de impresión. Entonces, el truco que uso es crear una vista previa de impresión en la macro AutoOpen.
Sub AutoOpen()
Application.Run MacroName:="MathTypeCommands.UIWrappers.FilePrintPreview"
ActiveDocument.ClosePrintPreview
End Sub