Fußzeile: Bei Änderung des Dokumentnamens wird filename in Fußzeile nicht geändert.

Anonym
2011-11-26T18:22:07+00:00

Ich nehme ein Dokument als Vorlage für ein anderes und ändere den Dateinamen. In der Fußzeile hatte ich "Schnellbausteine > Feld > FileName" eingefügt. Im umbenannten Dokument erscheint allerdings noch der FileName der alten Dokuments, was recht unbrauchbar ist. Gibt es da eine Lösung?

Vielen Dank im voraus.

Christl M.

Microsoft 365 und Office | Word | Für Zuhause | Windows

Gesperrte Frage. Diese Frage wurde aus der Microsoft-Support-Community migriert. Sie können darüber abstimmen, ob sie hilfreich ist, aber Sie können keine Kommentare oder Antworten hinzufügen oder der Frage folgen.

0 Kommentare Keine Kommentare
Antwort, die vom Frageautor angenommen wurde
Anonym
2011-12-28T21:16:26+00:00

Und ich welchem Moment soll das Makro ausgeführt werden? (Beim öffnen, beim schliessen, manuell?

Und wer ist denn dieser jemand? Soll ich es am 15. mitnehmen?

Gruss

Thomas

...na dann hänge ich die Codezeilen doch hier an. So muss es manuell gestartet werden.

' ---------- ---------- ----------

Option Explicit

Sub AlleFelderAktuialisieren()

Dim rngStoryRange As Word.Range

Dim toc As Word.TableOfContents

Dim tof As Word.TableOfFigures

Dim toa As Word.TableOfAuthorities

'Alle Teile vom Dokument ansprechen

   For Each rngStoryRange In ActiveDocument.StoryRanges

      subFelderAktualiseren rng:=rngStoryRange

      Do While Not (rngStoryRange.NextStoryRange Is Nothing)

         Set rngStoryRange = rngStoryRange.NextStoryRange

         subFelderAktualiseren rng:=rngStoryRange

       Loop

   Next rngStoryRange

'Verzeichnisse aktualisieren

   With ActiveDocument

      For Each toc In .TablesOfContents

         toc.Update

      Next toc

      For Each tof In .TablesOfFigures

         tof.Update

      Next tof

      For Each toa In .TablesOfAuthorities

         toa.Update

      Next toa

   End With

End Sub

Private Sub subFelderAktualiseren( _

   rng As Word.Range)

   rng.Fields.Update

End Sub

' ---------- ---------- ----------

War diese Antwort hilfreich?

0 Kommentare Keine Kommentare
Antwort, die vom Frageautor angenommen wurde
Lisa Wilke-Thissen 90,800 Zuverlässigkeitspunkte Volunteer Moderator
2011-11-27T07:54:15+00:00

Guten Morgen Christl,

ist leider ein Problem seit mehreren Versionen. Du musst das Feld manuell (per F9) aktualisieren oder per Makro jeweils beim Speichern aktualisieren lassen.

Da das Aktualisieren eh recht unterschiedlich erfolgt (manche Felder werden direkt, andere erst beim Wechsel in die Druckvorschau, wieder andere erst beim Drucken aktualisiert), kann es eventuell sinnvoll sein, generell ein Makro zu nutzen, das sämtliche Felder auf einen Schlag aktualisiert.

Viele Grüße

Lisa

War diese Antwort hilfreich?

0 Kommentare Keine Kommentare

29 zusätzliche Antworten

Sortieren nach: Am hilfreichsten
  1. Anonym
    2012-07-12T13:45:29+00:00

    Hallo Christian,

    vielen Dank. Leider verstehe ich so gut wie kein Wort ...!!! :-(

    Ich hab noch nie was mit VB gemacht. Auch sonst kenne ich mich mit Programmierung/Scripting überhaupt nicht aus.

    Ich hab dennoch mal versucht das zu machen was Du schreibst.

    "1)

    Nenn das Makro

    '---

    Sub FileSave()

    '---"

    Welches Makro soll ich umbenennen? Bei mir heißt das Ding "Modul1" und liegt im Ordner "Normal" -> "Module".

    Wenn ich das Modul1 in "Sub FileSave()" umbennen möchte kommt eine Fehlermeldung.

    "Klappt so nicht, wenn du ein gespeichertes Dokument unter einem anderen Namen speichern möchtest."

    Genau das bräuchte ich denke ich. Wenn man das Dokument nur speichert ändert sich ja der Dateiname nicht. Und somit auch nicht die Fußzeile. Interessant wird es ja nur, wenn man per "Speichern unter" einen neuen Namen vergibt.

    Gruß,

    Mirko

    War diese Antwort hilfreich?

    0 Kommentare Keine Kommentare
  2. Anonym
    2012-07-12T10:03:49+00:00

    och, da mach Dir mal keine Gedanken.

    Thomas und ich kennen uns schon eine längere Zeit ;-)

    Wie immer in Word gibt es mehrere Wege, die nach Rom führen.

    1)

    Nenn das Makro

    '---

    Sub FileSave()

    '---

    und füge vor dem Ende ein

    '---

        On Error Resume Next

        ActiveDocument.Save

        On Error GoTo 0

     End Sub

    '---

    ein, dann wird es immer ausgeführt, wenn du auf den Speichern-Befehl klickst. (Es wird der Befehl abgefangen und quasi ersetzt. Daher musst du auch den eigentlichen Befehl - das Speichern - einbauen)

    Klappt so nicht, wenn du ein gespeichertes Dokument unter einem anderen Namen speichern möchtest.

    In dem Fall musst du das Makro anders benennen:

    '---

    Sub FileSaveAs()

    '---

    und füge vor dem Ende ein

    '---

    On Error Resume Next

        Dialogs(wdDialogFileSaveAs).Show

        On Error GoTo 0

    End Sub

    '---

    damit wird dann der SpeichernUnter-Dialog abgefangen und am Ende aufgerufen.

    Und dann kannst Thomas' Idee aufgreifen und in die EReignissteuerung von Word eingreifen:

    Dazu brauchst du ein Klassenmodul (Rechte  Maustaste auf den Eintrag "Normal"->Einfügen) mit folgendem Inhalt:

    '----

    ' Klassenmodul Klasse1

    Public WithEvents oApp As Application

    Private Sub oApp_DocumentBeforeSave(ByVal Doc As Document, SaveAsUI As Boolean, Cancel As Boolean)

    AlleFelderAktualisieren

    End Sub

    '---

    In das Modul, in dem Thomas' Makro steht, fügst du vorher volgende Zeilen ein (an den Anfang des Moduls!):

    '---

    Dim cls As New Klasse1 ' Name des Klassenmoduls

    ' ---------- ---------- ----------

    Sub AutoExec()

    Set cls.oApp = Word.Application

    End Sub

    '---

    damit wird das Klassenmodul initialisiert und somit bei jedem Speichern-Befehl aufgerufen, bevor der eigentliche Befehl ausgeführt wird. Das Ereignis klinkt sich also VOR den Speichern Befehl ein.

    Alles keine Zauberei, kein großer Aufwand, sondern aus unserem Fundus (siehe auch Thomas Signatur ;-)

    Gruß

    Christian

    War diese Antwort hilfreich?

    0 Kommentare Keine Kommentare
  3. Anonym
    2012-07-12T09:33:33+00:00

    Hallo Christian,

    grundlegend - klar gerne! Aber ich hatte halt wie gesagt die Hoffnung, dass ich das Script von Thomas (auf der ersten Seite) verwenden kann und nur die Zeile

    "Sub AlleFelderAktuialisieren()"

    gegen eine andere ersetzen muss. So dass Niemand jetzt großartig viel Zeit investieren muss. (Nicht dass am Ende eine dicke Rechnung kommt ;-) ).

    Oder ist es dann doch nicht so einfach?

    Vielen Dank jedenfalls!!!

    Gruß,

    mirko

    War diese Antwort hilfreich?

    0 Kommentare Keine Kommentare