Variablen in Header und Footer von Word füllen

In Kopfzeilen und Fusszeilen von Word kann kein ocl ausgewertet werden, weil keine Kommentare eingefügt werden können. Falls man doch Werte aus Vertec einsetzten möchte, gibt es folgende Möglichkeiten:

Datenfelder in Kopf- und Fusszeilen einfügen

Diese Variante wird ab Vertec 6.1 unterstützt. Die Beschreibung finden Sie im Artikel Word-Berichte.

Variable in Header oder Footer einfügen

In Versionen vor Vertec 6.1 gibt es den folgenden Umweg über den Makrocode (siehe Abschnitt Event Makros im Artikel Wordberichte):

Als Variable wird ein Text eingefügt, der später über den Code eindeutig wieder zu finden ist. Im Beispiel unten lautet der Text xProjektcode:

fusszeile.gif

Makrocode

Das Beispiel möchte auf einer Rechnung den Projektcode in der Kopf- bzw. Fusszeile anzeigen. Damit das funktioniert, muss auf dieser Rechnungsvorlage ein Makro erstellt werden mit dem Namen BeforeReport2 oder AfterReport3. Makros mit solchem Namen werden automatisch ausgelöst, wenn ein Report aus Vertec heraus aufgerufen wird (siehe Abschnitt Event Makros im Artikel Wordberichte).

Der Code, um den Text in der Kopf- und Fusszeile zu ersetzen lautet für dieses Beispiel wie folgt:

Sub AfterReport3(vertec As Object, dok As Object, root As Object, optarg As Object, akt As Object)
Dim i as integer

For i = 1 To dok.Sections.Count
'Setzte den Wert im Header
dok.Sections(i).Headers (wdHeaderFooterPrimary).Range.Find.Execute FindText:="xProjektcode", ReplaceWith:=root.Eval("projekt.code"), Replace:=wdReplaceAll

  'Setzte den Wert im Footer

dok.Sections(i).Footers (wdHeaderFooterPrimary).Range.Find.Execute FindText:="xProjektcode", ReplaceWith:=root.Eval("projekt.code"), Replace:=wdReplaceAll
Next

End Sub

Hinweis

Der zu ersetzende Text muss direkt in die Kopfzeile geschrieben werden. Wenn er sich in einem Textfeld oder einer Tabelle befindet, wird er von der beschriebenen Methode nicht gefunden.

Variable per Formatvorlage referenzieren

Eine andere Variante ist, einen bestimmten Textteil innerhalb des Reports im Header bzw. Footer zu referenzieren. Dies kann wie folgt geschehen:

Ausgangslage: es ist ein Masterband vorhanden, und darin befindet sich ein Text Projektcode. Dieser Text ist mit dem Kommentar code versehen.

Markieren Sie nun den Text Projektcode und gehen dann in die Formatvorlagen. Wählen Sie Neue Formatvorlage. Im daraufhin erscheinenden Dialogfenster geben Sie als Namen Projektcode ein und wählen beim Formatvorlagetyp Zeichen aus und klicken auf OK.

Wechseln Sie dann in den Header (bzw. in den Footer) an die Stelle, wo Sie den Projektcode anzeigen möchten. Schreiben Sie Projektcode und markieren Sie diesen Text. Klicken Sie auf Einfügen > Schnellbausteine > Feld. Bei den Kategorien wählen Sie Verknüpfungen und Verweise aus und beim Feldnamen StyleRef. Wählen Sie Projektcode und klicken Sie auf OK.

Zu sehen ist auf den ersten Blick nichts, aber wenn Sie das Dokument dann ausführen, wird an dieser Stelle der entsprechende Projektcode angedruckt.

Zeilenumbrüche in Word-Berichten per VBA einfügen

In Word-Berichten kann ein Zeilenumbruch via ASCII-Code chr(13) + chr(10) eingefügt werden:

txt1 = "Erste Zeile" & Chr(13) & Chr(10) & "zweite Zeile"
ActiveDocument.Range.Find.Execute FindText:="Text1", ReplaceWith:= txt1, Replace:=wdReplaceAll

Befindet sich die zu ersetzende Variable in einer Tabelle, funktioniert das nicht. In diesem Fall muss der Zeilenumbruch über ^p eingefügt eingefügt werden:

txt2 = "Erste Zeile" & "^p" & "zweite Zeile"
ActiveDocument.Range.Find.Execute FindText:="Text2", ReplaceWith:=txt2, Replace:=wdReplaceAll

19.10.2006 | 12.07.2013: Next in den Makrocode eingefügt.
Produktlinien: Standard, Expert
Module: Leistung & CRM