Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
24.04.2024 17:19:09
Anzeige
Archiv - Navigation
1848to1852
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Formatierung übernehmen in Outlook

Formatierung übernehmen in Outlook
07.10.2021 14:58:23
Mike
Hallo,
ich habe ein Makro erstellt, mit dem 2 Sheets als PDFs per Mail versendet werden.
Das klappt auch super, nur leider übernimmt er die Formatierung des Textes nicht, der in Outlook Textfenster
kopiert wird. In den Einstellungen von Outlook und Excel habe ich bereits geprüft. Dort steht, dass die Formatierung der Ursprungsquelle übernommen werden soll.
Wenn ich manuell von Excel nach Word oder Outlook kopiere geht das auch, nur mit dem Makro nicht.
Muss bzw. kann man das irgendwie mit VBA steuern? Wenn ja, wie?

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Formatierung übernehmen in Outlook
07.10.2021 15:10:04
{Boris}
Hi Mike,
ich habe dazu eine alte Function (von Ron de Bruin) im Einsatz. Ob die so noch "state of the art" ist, weiß ich nicht, aber sie läuft, will heißen: Sie fügt einen Bereich aus einem Excelarbeitsblatt mit Formaten in den Mailkörper ein.

Function RangetoHTML(rng As Range)
' Changed by Ron de Bruin 28-Oct-2006
' Working in Office 2000-2016
Dim fso As Object
Dim ts As Object
Dim TempFile As String
Dim TempWB As Workbook
TempFile = Environ$("temp") & "\" & Format(Now, "dd-mm-yy h-mm-ss") & ".htm"
'Copy the range and create a new workbook to past the data in
rng.Copy
Set TempWB = Workbooks.Add(1)
With TempWB.Sheets(1)
.Cells(1).PasteSpecial Paste:=8
.Cells(1).PasteSpecial xlPasteValues, , False, False
.Cells(1).PasteSpecial xlPasteFormats, , False, False
.Cells(1).Select
Application.CutCopyMode = False
On Error Resume Next
.DrawingObjects.Visible = True
.DrawingObjects.Delete
On Error GoTo 0
End With
'Publish the sheet to a htm file
With TempWB.PublishObjects.Add( _
SourceType:=xlSourceRange, _
Filename:=TempFile, _
Sheet:=TempWB.Sheets(1).Name, _
Source:=TempWB.Sheets(1).UsedRange.Address, _
HtmlType:=xlHtmlStatic)
.Publish (True)
End With
'Read all data from the htm file into RangetoHTML
Set fso = CreateObject("Scripting.FileSystemObject")
Set ts = fso.GetFile(TempFile).OpenAsTextStream(1, -2)
RangetoHTML = ts.readall
ts.Close
RangetoHTML = Replace(RangetoHTML, "align=center x:publishsource=", _
"align=left x:publishsource=")
'Close TempWB
TempWB.Close savechanges:=False
'Delete the htm file we used in this function
Kill TempFile
Set ts = Nothing
Set fso = Nothing
Set TempWB = Nothing
End Function
Im Code dann so in der Art:

Dim MyOutApp As Object
Dim MyMessage As Object
Dim rng As Range
Set MyOutApp = CreateObject("Outlook.application")
Set MyMessage = MyOutApp.createitem(0)
Set rng = Tabelle6.Range("B2:C14") 'das ist der Bereich, der in den Mailkörper eingefügt werden soll
With MyMessage
.To = "Hans@mustermann.de"
.Subject = "Dein Mailbetreff"
.HTMLBody = RangetoHTML(rng) 'Hier wird die Function aufgerufen
.Display ' Mail anzeigen ohne automatischen Versand
End with
VG, Boris
Anzeige
AW: Beispieldatei
08.10.2021 12:43:03
Mike
Irgendwie kriege ich das nicht hin und werde aus dem Code auch nicht schlau.
Wenn ich das in meine Datei integriere, dann schreibt er mir den Text jetzt ein einer Zeile,
statt wie vorher wenigstens korrekt mit Leerzeichen/zeilen.
Anbei eine Test Datei.
https://www.herber.de/bbs/user/148506.xlsm
Ich kann in Deiner Datei...
08.10.2021 13:09:29
{Boris}
Hi,
...den Code - bzw. die Function RangeToHtml nicht finden. Aber die wird für Dein Beispiel auch nicht funktioniert, da Deine Zelle B5 innerhalb der einzelnen Zeichen (unterschiedlich) formatiert ist. Das kann die Function in der vorliegenden Form nicht.
Ich stell auf offen.
VG, Boris
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige