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 folgenden Umweg über den Makrocode (siehe Abschnitt Event Makros im Artikel Wordberichte).
Variable in Header oder Footer einfügen
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:

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 AfterReport2. 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:
Public sub AfterReport2(vertec As Object, dok As Object)
Dim Rechnung As IVtcObjectDim Projekt As IVtcObject
Set Rechnung = Vertec.ArgObjectSet Projekt = Rechnung.Eval("projekt")
'Setzte den Wert im Headerdok.Sections(1).Headers (wdHeaderFooterPrimary).Range.Find.Execute FindText:="xProjektcode", ReplaceWith:=Projekt.Member("code"), Replace:=wdReplaceAll
'Setzte den Wert im Footerdok.Sections(1).Footers (wdHeaderFooterPrimary).Range.Find.Execute FindText:="xProjektcode", ReplaceWith:=Projekt.Member("code"), Replace:=wdReplaceAll
End Sub
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
| erstellt: | 19.10.2006 |
|---|---|
| geändert: | 30.12.2011: Abschnitt über Zeilenumbrüche eingefügt |
| Produktlinien: | Standard, Expert |
| Module: | Leistung & CRM |
