Mit ComatePlus Platzhalter (Text) im Word-Footer ersetzen

Windowsspezifisches Forum , API ,..
Beiträge, die plattformübergreifend sind, gehören ins 'Allgemein'-Forum.
Meier
Beiträge: 21
Registriert: 18.01.2018 17:02

Mit ComatePlus Platzhalter (Text) im Word-Footer ersetzen

Beitrag von Meier »

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

Code: Alles auswählen

SetXMLNodeText(*CurrentNode, newText)
anzupassen. Bei wenig formatierten Worddokumenten funktioniert das auch sehr gut. In dem neuen Dokument befinden sich jetzt aber Aufzählungszeichen, die beim verwenden von

Code: Alles auswählen

SaveXML(xmldatei, Pfad)
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:

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
Die Texte stehen anschließend viele weiter auseinander.

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
Auch hier stehen die Text weiter auseinander und die Fußzeile wird verdoppelt. :freak:

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
Meier
Beiträge: 21
Registriert: 18.01.2018 17:02

Re: Mit ComatePlus Platzhalter (Text) im Word-Footer ersetze

Beitrag von Meier »

Hallo zusammen,

hat keiner eine Idee?

Also der Hauptzweck ist einen Text im Footer zu ersetzen ohne, dass sich dieser selbst verändert.

Vielleicht hat jemand eine andere Idee mit einem anderen Werkzeug als ComatePlus. Ich bin für alles offen.

Viele Grüße
Meier
Benutzeravatar
mk-soft
Beiträge: 3695
Registriert: 24.11.2004 13:12
Wohnort: Germany

Re: Mit ComatePlus Platzhalter (Text) im Word-Footer ersetze

Beitrag von mk-soft »

Wenn es mit VB-Script geht kann man es auch mit ActiveScript ausführen.
Somit muss man den Script nicht erst in COMate umsetzen.

Geht vielleicht schneller.

Link: viewtopic.php?f=8&t=31072
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Meier
Beiträge: 21
Registriert: 18.01.2018 17:02

Re: Mit ComatePlus Platzhalter (Text) im Word-Footer ersetze

Beitrag von Meier »

Hallo mk-soft,

hier ist auch schon das Problem. Ich kann es nicht mal im VB-Skript umsetzen. Der Footer wird nie eins zu eins zurückgeschrieben. Es entstehen u.a. größere Abstände.

Abers sobald ich es hinbekommen habe, dass VB das richtig macht, werde ich deinen Vorschlag ausprobieren.

Vielen Dank schon mal.

Viele Grüße
Meier
Antworten