Formatierten Text in ein Dokument schreiben
Formatierten Text in ein Dokument schreiben
Jetzt funktioniert zwar alles auf dem Dialog, aber kein bisschen davon würde im Dokument ankommen. Das passiert in der btnOK_Click-Prozedur, braucht aber wegen der Formatierung noch ein wenig Vorbereitung. Normalerweise könnten Sie die Inhalte nämlich einfach so übertragen:
Private Sub btnOK_Click() Dim ctlJedes As Control With Selection For Each ctlJedes In Me.Controls If TypeName(ctlJedes) = "TextBox" Then .Collapse wdCollapseEnd .Text = ctlJedes.Value & vbCrLf End If Next End With Unload Me End Sub
Dabei wird für jedes Kontrollelement auf dem Dialog geprüft, ob es eines vom Typ TextBox (Achtung: Großschreibung beachten!) ist. Dann wird dessen Text in das aktuelle Dokument geschrieben und mit einem Absatzzeichen ergänzt.
Sobald aber Texte formatiert werden sollen, müssen sie irgendwie markiert sein. Das sind sie aber so gerade nicht und der Aufwand wäre ziemlich hoch.
Alternativ könnten Sie vor dem Schreiben die Fett-/Kursiv-Formatierung einschalten (mit Selection.BoldRun bzw. Selection.ItalicRun). Genau genommen handelt es sich dabei aber um Umschalter. Sie müssten also vorher noch herausfinden, ob Sie vielleicht die Formatierung ungewollt ausschalten. Außerdem gibt es diese Technik nicht für die übrigen Formatierungen wie Unterstreichen.
Die Lösung besteht darin, dass Sie für den einzufügenden Bereich ein Range-Objekt rngHier zuweisen. Damit eine zufällige Markierung nicht überschrieben wird, wird vorher die Selection mit der Collapse-Methode auf ihr eigenes Ende reduziert und dann erst dem rngHier-Bereich zugewiesen.
Zu diesem Zeitpunkt ist dessen Breite 0, aber mit dem Hinzufügen von Text wird der rngHier-Bereich automatisch erweitert. Daher müssen Sie nicht die Länge des eingefügten Textes wissen, sondern können einfach anschließend den Bereich bearbeiten.
