Mit ComatePlus Platzhalter (Text) im Word-Footer ersetzen
Verfasst: 26.03.2019 15:36
Hallo Ihr Lieben,
ich komme mal wieder mit einer ComatePlus-Anfrage zu euch.
Ich würde gerne im Footer (oder Header) einen Platzhalter ersetzen, z.B. #datum. Der Rest des Footers ist in bestimmter Weise angeordnet und soll sich nicht verändern.
Bisher besteht die Lösung darin, das Worddokument als XML abzuspeichern und mit anzupassen. Bei wenig formatierten Worddokumenten funktioniert das auch sehr gut. In dem neuen Dokument befinden sich jetzt aber Aufzählungszeichen, die beim verwenden von verändert werden und ziemlich bescheiden aussehen.
Nun bin ich auf die Idee gekommen, den Platzhalter mit ComatePlus zu ersetzen. Dabei bin ich dann nach zahlreichen Versuchen übergegangen erstmal eine VBA-Version hinzubekommen. Da wird zwar der Platzhalter ersetzt, aber die formatierte Fußzeile sieht beim Zurückschreiben immer anders aus. Hier mal zwei Versuche:
Die Texte stehen anschließend viele weiter auseinander.
Auch hier stehen die Text weiter auseinander und die Fußzeile wird verdoppelt.
Die Hoffnung ist, den bestehenden VBA-Code in ComatePlus zu übersetzen.
Vielleicht hat ja jemand eine direkte Lösung oder zumindest zu meinen Ansätzen.
Viele Grüße
Meier
ich komme mal wieder mit einer ComatePlus-Anfrage zu euch.
Ich würde gerne im Footer (oder Header) einen Platzhalter ersetzen, z.B. #datum. Der Rest des Footers ist in bestimmter Weise angeordnet und soll sich nicht verändern.
Bisher besteht die Lösung darin, das Worddokument als XML abzuspeichern und mit
Code: Alles auswählen
SetXMLNodeText(*CurrentNode, newText)
Code: Alles auswählen
SaveXML(xmldatei, Pfad)
Nun bin ich auf die Idee gekommen, den Platzhalter mit ComatePlus zu ersetzen. Dabei bin ich dann nach zahlreichen Versuchen übergegangen erstmal eine VBA-Version hinzubekommen. Da wird zwar der Platzhalter ersetzt, aber die formatierte Fußzeile sieht beim Zurückschreiben immer anders aus. Hier mal zwei Versuche:
Code: Alles auswählen
Dim strHeader As String
strHeader = ActiveDocument.StoryRanges(wdPrimaryHeaderStory)
strHeader = Replace(strHeader, "#datum", "25.03.2019")
strHeader = Left(strHeader, Len(strHeader) - 1)
ActiveDocument.Sections(1).Headers(wdHeaderFooterPrimary).Range.Text = strHeader
Code: Alles auswählen
Dim rngFoot As Word.Range 'Quelle
Dim rngFootZiel As Word.Range 'Ziel
Set rngFoot = ActiveDocument.Sections(1).Footers(wdHeaderFooterPrimary).Range.FormattedText
Set rngFootZiel = ActiveDocument.Sections(1).Footers(wdHeaderFooterPrimary).Range
'MsgBox strHeader
rngFoot = Replace(rngFoot, "#now", "25.03.2019")
rngFootZiel.Collapse wdCollapseStart
rngFootZiel.FormattedText = rngFoot.FormattedText
Die Hoffnung ist, den bestehenden VBA-Code in ComatePlus zu übersetzen.
Vielleicht hat ja jemand eine direkte Lösung oder zumindest zu meinen Ansätzen.
Viele Grüße
Meier