Aktuelle Seite:
/vba/vbafieldcode.htm
Letzte Änderung: 24.06.2006

Getestet unter Word97Getestet unter Word2000Getestet unter WordXPGetestet unter Word2003  
Beispiel anzeigen
Makro/Datei speichern
Print

Felder werden als Platzhalter für sich ändernde Daten in einem Dokument verwendet und können dabei u.a. Daten direkt anzeigen (z.B. das aktuelle Datum) oder Daten in Abhängigkeit einer Abfrage (z.B. Wenn...Dann-Abfragen).
Feldfunktionen werden dabei in runden oder geschweiften Klammern ( { } ) angezeigt, wobei die geschweiften Klammern nicht direkt eingegeben werden können, sondern über die Tastenkombination <Strg>+<F9> paarweise erzeugt werden, wenn man nicht die Feldfunktion über das Menü einfügt.

Möchte man diese Feldfunktionen aber dokumentieren oder anderen zeigen, wird immer nur das Ergebnis der Funktion in die Zwischenablage kopiert - nie die Feldfunktion an sich.
Auch der Versuch die angezeigte Feldfunktion aufzulösen (per <Strg>+<Shift>+<F9>) zeigt anschließend nur das Ergebnis an.

Mit Hilfe eines kleinen Makros lassen sich aber recht einfach Feldfunktionen in ihren Feldcode umwandeln.
Dazu werden zuerst alle Felder im markierten Bereich als Feldfunktionen angezeigt. Anschließend werden alle geschweiften (Feldfunktion-)Klammern durch einfache geschweifte Klammern ersetzt, bevor der markierte Bereich durch das ersetzte Ergebnis überschrieben wird. Die geschweiften Feldfunktion-Klammern verbergen sich dabei hinter den Zeichen Chr(19) und Chr(21).

Alternativ ließe sich zwar die .Code-Eigenschaft der Felder auslesen, jedoch sind zum Einen die geschweiften Klammern nicht enthalten, was nicht wirklich schlimm wäre, sondern bei verschachtelten Feldern müsste man von innen nach außen die Felder und ihre .Code-Eigenschaft ermitteln, um die verschachtelte Feldfunktion nachbauen zu können. Dieses lässt sich zwar realisieren, aber der Aufwand wäre bedeutend größer - und das muss ja nicht sein. smile

Das nachfolgende Makro lässt sich z.B. auf ein Tastenkürzel oder ein Symbol legen und wandelt alle im markierten Bereich enthaltenen Felder so um, dass die Feldfunktion angezeigt wird (siehe Beispiel); das Ergebnis wird zusätzlich in die Zwischenablage kopiert und kann an anderer Stelle eingefügt werden.


Sub ChangeFieldCode()  
Dim ff As Field
Dim rng As Range , rngSel As Range
Dim str As String
Set rngSel = Selection.Range
For Each ff In rngSel.Fields
  ff.ShowCodes = True
Next ff
str = rngSel.Text
str = Replace (str, Chr(19), "{")
str = Replace (str, Chr(21), "}")
rngSel.Text = str
rngSel.Copy
End Sub 

 www.chf-online.de/vba/vbafieldcode.htm © 2001-11 Christian Freßdorf (Zaphod-Systems)