Hallo Forum,
ich habe ein Frage bzw. ein ungelöstes Problem in Word 2010:
Mein Ziel: Aktualisierung mit VBA diverser Felder, wie z. B. Speicherdatum, Dateiname, etc. Diese Felder stehen geschützt (Blattschutz) in der Kopf- und Fußzeile und können mit VBA aktualisiert werden. Das funktioniert bis auf das Feld {FILENAME}. Grund: der Save-Event wird ausgelöst, die Aktualisierung läuft durch, aber das Dialogfeld 'Speichern-Unter' kommt nach dem 'Save-Event. Dadurch bekomme ich den Dateinamen nicht mit.
Hat jemand eine Idee, wie ich das Lösen kann?
Kann ich das Dialogfeld 'Speichen unter' unterdrücken, indem ich in den Save-Event die 'Save-As'-Routine einbaue und das erneute 'Save-As' verhindere? Gibt es andere Möglichkeiten in VBA?
Bin gespannt auf Ideen/Tipps.
Gruß
Helmut
Mein Code:
Option Explicit 'Warnmeldungen einschalten
Public WithEvents appWord As Word.Application
Dim thisapp As New DocEvents
'Funktion für das FelderUpdate
Private Function Update_Fields()
Dim oStory As Range
On Error GoTo Ende
If Documents.Count > 0 Then
Application.ScreenUpdating = False
Application.DisplayAlerts = wdAlertsNone
For Each oStory In ActiveDocument.StoryRanges
oStory.Fields.Update
While Not (oStory.NextStoryRange Is Nothing)
Set oStory = oStory.NextStoryRange
oStory.Fields.Update
Wend
Next
Application.DisplayAlerts = wdAlertsAll
Application.ScreenUpdating = True
End If
Ende:
End Function
Private Sub appWord_DocumentBeforeSave(ByVal doc As Document, SaveAsUI As Boolean, Cancel As Boolean)
On Error GoTo Ende
If Application.ActiveDocument.Saved = False Then
Call Update_Fields
End If
Ende:
End Sub
'Event: Printer : davor ebenfalls aktualisieren
' kann als Option in Word eingestellt werden - will ich erzwingen
Private Sub appWord_DocumentBeforePrint(ByVal doc As Document, Cancel As Boolean)
On Error GoTo Ende
Call Update_Fields
Ende:
End Sub
|