marcoborn
Goto Top

Word-VBA: Formatierung von Text

Hallo Forum,
ich möchte gern per VBA Text in ein Word-Dokument schreiben, welcher unterschiedlich formatiert ist. Z.B:

Name: Mustermann, Max

Bisher habe ich dazu 3mal TypeText verwendet und jeweils nach dem ersten und dritten Mal die Formatierung auf Fett bzw. Kursiv umgestellt Kann das Ganze auch zuvor in Form einer Variable zusammengebaut werden, wobei die 3 Teilstrings die Formatierung erhalten, bevor sie per TypeText in das Dokument geschrieben werden?

Vielen Dank im voraus,
M. Born

Content-ID: 1708955863

Url: https://administrator.de/contentid/1708955863

Ausgedruckt am: 23.11.2024 um 23:11 Uhr

149569
Lösung 149569 10.01.2022 aktualisiert um 17:19:43 Uhr
Goto Top
Formatierungen können nur auf bereits im Dokument vorhandene Ranges angewendet werden. Da man keinen leeren Range anlegen kann (sowas wie Dim r as new Range geht nicht) muss der Text also entweder schon im Dokument eingetragen sein oder man formatiert einen Range vorher und fügt dann einen Text ein.
Btw. TypeText muss man nicht unbedingt verwenden, man kann auch die Text-Eigenschaft eines Range-Objekts verwenden um den Text zuzuweisen.
MarcoBorn
MarcoBorn 10.01.2022 um 17:38:13 Uhr
Goto Top
Vielen Dank. Ist zwar ziemlich umständlich gelöst, aber mehr scheint das Objektmodell dann doch nicht herzugeben.
149569
149569 10.01.2022 aktualisiert um 18:13:35 Uhr
Goto Top
Zitat von @MarcoBorn:

Vielen Dank. Ist zwar ziemlich umständlich gelöst, aber mehr scheint das Objektmodell dann doch nicht herzugeben.
Musst du dir halt ein Plugin schreiben das formatierten RTF Text über die Zwischenablage via Paste einfügt wenn das gewünschte möglich werden soll.
https://stackoverflow.com/questions/63716400/injecting-rtf-code-in-the-c ...
MarcoBorn
MarcoBorn 11.01.2022 um 06:48:41 Uhr
Goto Top
Wollte meinen Code etwas beschleunigen, da er ca. 1h braucht, um durchzulaufen, indem ich möglichst viel "im RAM" abarbeiten wollte, bevor ich auf Word zugreife. Aber so viel Aufwand will ich nun auch nicht treiben, nur dass er dann in 50 Min. fertig ist. Aber trotzdem danke für den Hinweis.