AW: ClpObj.GetText(i)
30.12.2019 20:07:55
volti
Hallo Ralf,
ich kann mir nicht vorstellen, dass mit dem Befehl ClpObj.GetText(i) außer dem Text auch noch die Formatierungen übernommen werden können.
Woher sollte der Befehl auch wissen, welches Format (Binär, Text, HTML) er ausgeben soll. Schon in früheren Forumsbeiträgen ist die fehlende Formatierung öfter beklagt worden.
Aber nun gut, folgende Vorschläge hätte ich dennoch für Dich, vielleicht kannst Du ja was damit anfangen:
Falls Du nur den kopierten Bereich in die Mail einfügen möchtest (ohne Kopf und Fuß, bzw. diese Angaben sind schon in Excel) könntest Du folgenden code dafür nutzen:
Dim wdRng As Object
'....
Selection.Copy
Set wdRng = .GetInspector.WordEditor.Range
wdRng.WholeStory
wdRng.Paste
Ansonsten empfehle ich mit der Funktion RangeToHtml zu arbeiten. Basierend auf Umsetzung durch Excel selbst via Datei. Hierzu sind etliche Beiträge im Netz.
Oder Du nimmst gleich mein u.a. Beispiel. Du brauchst vorher nichts kopieren, sondern nur den Quellbereich angeben:
Sub CodesnipselBeispiel()
Dim sMeinMailText As String
sMeinMailText = "Hallo!"
With CreateObject("Outlook.Application").CreateItem(0)
.to = "Nach@web.de"
.GetInspector
.htmlbody = Replace(sMeinMailText, vbLf, "<br>") & Range2Html(Range("$A13:$C$16")) & .htmlbody
.display
End With
End Sub
Private Function Range2Html(oBereich As Range) As String
'Gibt den angegebenen Bereich als HTML zurück
Dim sTMPDatei As String, oPublish As PublishObject, i As Integer
sTMPDatei = Environ$("temp") & "\" & Format(Now, "ddmmyyhhmmss") & ".htm"
With oBereich
Set oPublish = ThisWorkbook.PublishObjects.Add( _
SourceType:=xlSourceRange, _
Filename:=sTMPDatei, _
Sheet:=.Parent.Name, _
Source:=.Address, _
HtmlType:=xlHtmlStatic)
Call oPublish.Publish(Create:=True)
End With
i = FreeFile
Open sTMPDatei For Binary As i
Range2Html = Space(LOF(1)): Get #1, , Range2Html
Range2Html = Replace(Range2Html, "align=center x:publishsource=", "align=left x:publishsource=")
Close i
Kill sTMPDatei
Set oPublish = Nothing
End Function
viele Grüße
Karl-Heinz