RichTextBox mit Formatierung in Word einfügen

  • VB.NET

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von Gelöschter Benutzer.

    RichTextBox mit Formatierung in Word einfügen

    Hallo liebe Community,

    ich möchte formatierten Text aus einer RichTextBox in ein Word-Dokument einfügen.

    Problem:
    Wenn ich das so einfüge kommt absoluter Müll dabei raus und die Formatierung wird in {geschweiften Klammern} Dargestellt, sodass ich nichts damit anfangen kann.

    Nun meine Frage, wie bekomme ich es hin das die Formatierung übernommen, die {Klammern} aber weg bleiben?

    Danke im Voraus
    Wie transportierst Du denn den

    Yasu schrieb:

    formatierten Text
    in das Word-Dokument?
    Copy und Paste funktioniert.
    Per Code kannst Du so den Text als RichText in das Clipboard übernehmen:

    VB.NET-Quellcode

    1. Clipboard.SetText(Me.RichTextBox1.Rtf, TextDataFormat.Rtf)
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Nach deinem Tipp wird der Text so transportiert:

    VB.NET-Quellcode

    1. If doc.Range.Bookmarks.Exists("Schulung") Then
    2. My.Computer.Clipboard.SetText(Bearbeiten.rtb_Schulungen.Rtf, TextDataFormat.Rtf)
    3. doc.Bookmarks().Item("Schulung").Range.Text = Bearbeiten.rtb_Schulungen.Rtf
    4. Else
    5. message = "Textmarke 'Schulung' nicht vorhanden!" + Environment.NewLine
    6. End If


    Leider bekomme ich als Erbebnis für:
    G H I

    nur:

    Quellcode

    1. {\rtf1\ansi\ansicpg1252\deff0\deflang1031{\fonttbl{\f0\fnil\fcharset0 Comic Sans MS;}}
    2. \viewkind4\uc1\pard\b\f0\fs17 G\b0 \i H\i0 \ul I\ulnone\par
    3. }


    Das selbe Ergebnis hatte ich auch vorher als ich den TExt noch so übernommen habe:

    VB.NET-Quellcode

    1. If doc.Range.Bookmarks.Exists("Schulung") Then
    2. doc.Bookmarks().Item("Schulung").Range.Text = Bearbeiten.rtb_Schulungen.Rtf
    3. Else
    4. message = "Textmarke 'Schulung' nicht vorhanden!" + Environment.NewLine
    5. End If

    Yasu schrieb:

    VB.NET-Quellcode

    1. doc.Bookmarks().Item("Schulung").Range.Text
    Das funktioniert nur, wenn es da statt .Text eine RTF-äquivalente Property gibt oder wenn Du dort den Inhalt der Zwischenablage einfügen kannst.
    Welche Properties neben .Text gibt es noch?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Zu viele um sie alle auf zu zählen!
    Aber es geht dabei eher darum an welcher Stelle die Daten eingesetzt werden!
    So gibt es Footnote oder Cell und ähnliches!
    Allerdings habe ich zwei Funktionen gefunden die sich interessant anhören.

    Das wäre zum einen die InsertFile(Filename as String)-Funktion, bei der müsste ich den RTF-Text nach Word exportieren, abspeichern (als doc) und dann die Datei in das eigentliche Word-Dokument einfügen. Zu guter letzt müsste ich dann die Datei löschen. (diese alternative macht mich nicht wirklich glücklich)

    Das andere wäre die Paste()-Funktion, die ich noch nicht so ganz verstanden habe...

    Yasu schrieb:

    Paste()-Funktion
    Da musst Du mal experimentieren.
    Den Inhalt einer RTB kannst Du im RTF-Format abspeichern:

    VB.NET-Quellcode

    1. Me.RichTextBox1.SaveFile(DEIN_PFAD, RichTextBoxStreamType.RichText)
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Problem mit .Paste() gelöst!

    Das mit dem speichern eines rtf-Files brauchte ich nicht, da Word das nicht hinbekommt! Das gespeicherte File muss ein *.doc sein, damit Word die InsertFile-Funktion fehlerfrei ausführt! Wie ich das anstelle habe ich aber bereits herausgefunden!
    Aber wie gesagt war ich mit der Variante sehr unglücklich!

    Danke für deine Hilfe!