Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Excel-Text in HTML umwandeln

Excel-Text in HTML umwandeln
20.01.2022 13:49:20
Basti
Hallo Zusammen,
ich habe eine grundsätzliche Frage:
In einer Excel-Zelle befindet sich ein Text (mit Unterpunkten und Absätzen) den ich per VBA in Outlook/Mail einfüge und abschicken kann.
Leider ist der Text nicht in HTML umgewandelt, sodass die Formatierungen nicht 100% übernommen werden.
Wie geht man da am besten vor? Kann man seinen Text in der Zelle bequem anpassen und das Makro so ergänzen, dass es den Text als HTML in die Mail einfügt und nicht als einfachen Text?
Danke für Eure Fachmeinung bzw. Vorschläge
Viele Grüße
Basti
Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Code/ Mappe? owT
20.01.2022 14:00:43
Rudi
AW: Excel-Text in HTML umwandeln
20.01.2022 14:44:08
volti
Hallo Basti,
wenn Du HTML-Text zur Schriftart und Hintergrund zu einer Excel benötigst, kannst Du das u.a. Makro mal ausprobieren...
Wenn Du eine Zelle/einen Bereich oder ein Bild in eine Mail einfügen möchtest, findest Du nachfolgend ein Beispiel der über den WordEditor arbeitet.
Weitere Möglichkeit bietet RangeToHTML bzw. Range2HTML. Hierzu mal googlen oder hier noch mal ansprechen.
Oder Du stellst wie von Rudi schon angesprochen Deine Datei hier ein.
Code:

[Cc][+][-]

Sub Test() Debug.Print GetHTML(Range("A1")) End Sub Function GetHTML(rZelle As Range, Optional bHG As Boolean) As String ' RTF in HTML umwandeln Version für <<<Excel-Zellen>>> Dim sHTML As String, sText As String, iPos As Integer Dim sFontName As String, sFontSize As String, sUnderline As String Dim iColor As Long, iUnderline As Long, sBackground As String Dim bItalic As Boolean, bBold As Boolean If bHG Then ' Hintergrundfarbe sBackground = " background-" _ & GetHexColor(rZelle.Interior.Color) & ";" End If For iPos = 1 To Len(rZelle.Value) With rZelle.Characters(iPos, 1) sText = Replace(.Text, vbLf, "<br>") ' Zeilenumbrüche einbauen With .Font If sFontName <> .Name Or sFontSize <> .Size _ Or iColor <> .Color Or bItalic <> .Italic _ Or iUnderline <> .Underline Or bBold <> .Bold Then sFontName = .Name ' Schriftart sFontSize = .Size: iColor = .Color ' Schriftgröße, -farbe iUnderline = .Underline ' Unterstreichen bItalic = .Italic: bBold = .Bold ' Kursiv und Fett If sHTML Like "*<span*" Then sHTML = sHTML & "</span>" ' Span-Abschluss End If sHTML = sHTML & "<span style='" _ & "font-family:" & sFontName & ";" _ & " font-size:" & sFontSize & "pt;" _ & " " & GetHexColor(iColor) & ";" _ & " font-weight: " & IIf(bBold, "bold;", "normal;") _ & " font-style: " & IIf(bItalic, "italic;", "normal;") _ & " text-decoration: " & IIf(iUnderline > 0, "underline;", "none;") _ & sBackground & "'>" ' Formatierung HTML End If End With sHTML = sHTML & sText ' Text_anfügen End With Next iPos GetHTML = sHTML & "</span>" End Function Private Function GetHexColor(oCol As Variant) As String GetHexColor = "color:#" _ & Right("00" & Hex(oCol And vbRed), 2) _ & Right("00" & Hex((oCol And vbGreen) &bsol; &H100), 2) _ & Right("00" & Hex((oCol And vbBlue) &bsol; &H10000), 2) End Function ' ################################################### Private Sub Mail_BereichalsBereich_Word() ' Sendet Mail mit integriertem Bereich als Bereich mit Signatur ' Das Bild wird über das Kürzel ~ im Text platziert Dim WSh1 As Worksheet, WSh2 As Worksheet Dim sMailtext As String, sSignatur As String Dim sBer As String sBer = "B2:B5" ' Kopierbereich Set WSh1 = ThisWorkbook.Sheets("Tabelle1") ' Blatt mit Maildaten Set WSh2 = ThisWorkbook.Sheets("Tabelle2") ' Datenblatt WSh2.Range(sBer).Copy ' Bereich kopieren With CreateObject("Outlook.Application").CreateItem(0) .BodyFormat = 2 ' 2=HTML-Format, 3=Richtext .Subject = WSh1.Range("A2").Value ' Betreff .To = WSh1.Range("A3").Value ' Empfänger .CC = WSh1.Range("A4").Value ' Kopie sMailtext = WSh1.Range("A5").Value & vbLf .GetInspector ' Signatur holen .htmlbody = Replace(sMailtext, vbLf, "<br>") & .htmlbody .Display With .GetInspector.WordEditor.Application.Selection .Start = Len(sMailtext) + 1 .Paste ' Bereich in Mail einfügen End With End With End Sub

_________________________
viele Grüße aus Freigericht 😊
Karl-Heinz

Anzeige
AW: copy-paste
20.01.2022 14:44:24
Fennek
Hallo,
sofern das Format der Email html ist, reicht copy/paste. Von Hand oder VBA.
mfg
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Excel-Text in HTML umwandeln


Schritt-für-Schritt-Anleitung

  1. Öffne Excel und erstelle ein neues Arbeitsblatt oder öffne eine bestehende Datei, die den Text enthält, den Du in HTML umwandeln möchtest.

  2. Füge den gewünschten Text in eine Zelle ein. Achte darauf, dass der Text formatiert ist, z. B. mit Absätzen und Unterpunkten.

  3. Öffne den VBA-Editor durch Drücken von ALT + F11.

  4. Füge das folgende Makro ein, um den Text in HTML umzuwandeln:

    Sub Test()
       Debug.Print GetHTML(Range("A1"))
    End Sub
    
    Function GetHTML(rZelle As Range) As String
       ' Hier wird der RTF in HTML umgewandelt
       Dim sHTML As String, sText As String
       ' ... restlicher Code hier ...
       GetHTML = sHTML
    End Function
  5. Ersetze "A1" im Code durch die Zelle, die den zu konvertierenden Text enthält.

  6. Führe das Makro aus. Der umgewandelte HTML-Text wird im Direktfenster (Debug) angezeigt.

  7. Kopiere den HTML-Text und füge ihn in Deine E-Mail oder Anwendung ein.


Häufige Fehler und Lösungen

  • Fehler: "Typenüberlauf"

    • Lösung: Überprüfe die Daten in der Zelle. Stelle sicher, dass sie nicht zu lang sind oder unerwartete Zeichen enthalten.
  • Fehler: Keine Formatierung in der E-Mail

    • Lösung: Stelle sicher, dass Du die E-Mail im HTML-Format versendest. In Outlook kannst Du dies in den Einstellungen anpassen.

Alternative Methoden

  • Copy-Paste-Methode: Wenn der Text in einer E-Mail im HTML-Format benötigt wird, kannst Du den formatierten Text einfach kopieren und in die E-Mail einfügen. Dies funktioniert in den meisten Fällen, solange die E-Mail-Anwendung HTML unterstützt.

  • Online HTML-Converter: Es gibt verschiedene kostenlose Online-Tools, mit denen Du Text in HTML umwandeln kannst. Diese sind nützlich, wenn Du keine VBA-Anpassungen vornehmen möchtest.


Praktische Beispiele

  • Beispiel 1: Wenn Du einen Text wie „Dies ist ein Test“ in Zelle A1 hast, wird der folgende VBA-Code diesen Text in HTML umwandeln:

    Debug.Print GetHTML(Range("A1"))
  • Beispiel 2: Um eine E-Mail mit formatierter Signatur zu erstellen, kannst Du den HTML-Text direkt in die htmlbody-Eigenschaft einer Outlook-Mail einfügen:

    .htmlbody = "<b>Dies ist eine Signatur</b><br>" & .htmlbody

Tipps für Profis

  • Verwende die RangeToHTML- oder Range2HTML-Funktionen, um komplexere Bereiche in HTML umzuwandeln.
  • Achte darauf, dass die Formatierung in Excel so angelegt ist, dass sie auch in HTML gut aussieht. Experimentiere mit Schriftarten und Farben.
  • Halte den Code modular, sodass Du Teile des Codes wiederverwenden kannst, z. B. für unterschiedliche Zellen oder Bereiche.

FAQ: Häufige Fragen

1. Wie kann ich einen formatierten Text in HTML umwandeln?
Verwende den VBA-Code, um den Text in der Zelle in HTML umzuwandeln, indem Du die entsprechenden Formatierungen berücksichtigst.

2. Kann ich auch Outlook-Mails in HTML umwandeln?
Ja, Du kannst Outlook-Mails im HTML-Format versenden, indem Du die htmlbody-Eigenschaft in Deinem VBA-Code verwendest und sicherstellst, dass der Mail-Client auf HTML eingestellt ist.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige