Variablen in Header und Footer von Legacy Word-Vorlagen via Makrocode füllen
Produktlinie
Standard
|Expert
Betriebsart
CLOUD ABO
|ON-PREMISES
Module
Leistung & CRM
Budget & Teilprojekt
Fremdkosten
Ressourcenplanung
Business Intelligence
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:
Diese Variante wird ab Vertec 6.1 unterstützt. Die Beschreibung finden Sie im Artikel Legacy Word-Berichte .
In Versionen vor Vertec 6.1 gibt es den folgenden Umweg über den Makrocode (siehe Abschnitt Event Makros
im Artikel Legacy Word-Berichte
):
Als Variable wird ein Text eingefügt, der später über den Code eindeutig wiederzufinden ist. Im Beispiel unten lautet der Text xProjektcode:
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 Legacy Word-Berichte
).
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
Der zu ersetzende Text (xProjektcode) 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.
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.
Diese Variante über StyleRef Felder funktioniert nicht mit Vertec-generierten Legacy Word-Berichten mit Ausgabeformat PDF.
Um zu wissen, ob es sich bei einem Feld um ein StyleRef Feld handelt, kann mit dem Tastaturkürzel Shift-F9 der Feld-Code angezeigt werden:
In Legacy 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