
Da VBA kein „ onSave
oder“ afterSave
-Ereignis hat, habe ich Probleme, eine Möglichkeit zu finden, mein Dokument zu speichern UND den Dokumentspeicherort zu aktualisieren (nachdem es gespeichert wurde).
Dieses Dokument wird am häufigsten wie folgt verwendet:
- Neues Dokument aus Vorlage erstellen
- Dokument bearbeiten
- Dokument speichern unter (ein Ort im Netzwerk)
Mein Chef ist von all seinen Dokumenten verwirrt und hat Probleme, sie wiederzufinden.
Deshalb möchte er sehen, wo diese Dokumente gespeichert sind.
Ich habe das Dokumentspeicherortfeld in der Fußzeile hinzugefügt und diesen Code in das VBA-Projekt eingefügt.
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
Alles funktioniert bis zum Punkt activeDocument.Save, und es muss vorher mindestens einmal gespeichert worden sein.
Was auch irgendwie offensichtlich ist, weil ich davon ausgehe, dass das beforeSave-Ereignis vor dem ordnungsgemäßen Speichern stattfindet und es daher keinen Speicherortpfad gibt ... Was kann ich tun, um das richtig zu machen?
Antwort1
Dieses Feld wird durch eine Druckvorschau aktualisiert. Der Trick, den ich verwende, besteht darin, eine Druckvorschau im AutoOpen-Makro zu erstellen.
Sub AutoOpen()
Application.Run MacroName:="MathTypeCommands.UIWrappers.FilePrintPreview"
ActiveDocument.ClosePrintPreview
End Sub