Anzeige
Archiv - Navigation
1852to1856
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

Range als E-Mail Body einfügen

Range als E-Mail Body einfügen
22.10.2021 21:11:23
Carl
Hallo Zusammen ich habe ein kleines Problem, ich versuche den Inhalt einer intelligenten Tabelle in den Body einer E-Mail einzufügen.
Mittels des gefundenen VBA Codes funzt es eigentlich auch ganz gut. Eigentlich... Es gibt nämlich ein kleines Problem. Der Code kopiert nur den Datenbereich der intelligenten Tabelle3 aus dem Tabellenblatt1. Wie bekomme ich es denn bitte hin die Tabelle inklusive der Überschriften Zeile in die Tabelle einzufügen.
Set rng = Sheets("Tabelle1").Range("Tabelle3"[#All]).SpecialCells(xlCellTypeVisibl
wirf leider die Fehlermeldung der MsgBox aus.

Sub Mail_Selection_Range_Outlook_Body()
'For Tips see: http://www.rondebruin.nl/win/winmail/Outlook/tips.htm
'Don't forget to copy the

Function RangetoHTML in the module.
'Working in Excel 2000-2016
Dim rng As Range
Dim OutApp As Object
Dim OutMail As Object
Set rng = Nothing
On Error Resume Next
'Only the visible cells in the selection
'Set rng = Selection.SpecialCells(xlCellTypeVisible)
'You can also use a fixed range if you want
Set rng = Sheets("Tabelle1").Range("Tabelle3").SpecialCells(xlCellTypeVisible)
On Error GoTo 0
If rng Is Nothing Then
MsgBox "The selection is not a range or the sheet is protected" & _
vbNewLine & "please correct and try again.", vbOKOnly
Exit Sub
End If
With Application
.EnableEvents = False
.ScreenUpdating = False
End With
Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0)
On Error Resume Next
With OutMail
.To = ""
.CC = ""
.BCC = ""
.Subject = "This is the Subject line"
.HTMLBody = RangeToHtml(rng)
.Display
End With
On Error GoTo 0
With Application
.EnableEvents = True
.ScreenUpdating = True
End With
Set OutMail = Nothing
Set OutApp = Nothing
End Sub

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

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Range als E-Mail Body einfügen
23.10.2021 09:08:27
volti
Hallo zusammen,
hier noch eine Alternative, falls der Bereich/Tabelle nicht als Grafik, sondern als Tabellenbereich eingefügt werden soll, auch hier ohne das Range2HTML-Gedöns.
Leider ist es mir auch noch nicht gelungen, die Kopfzeile mit zu kopieren, aber über Trick17, ich erweitere einfach den zu kopierenden Bereich, da sollte es dann klappen.
Probiert es halt mal aus.
Code:

[Cc][+][-]

Option Explicit Private Sub Mail_BereichalsBereich() ' Sendet Mail mit integriertem Bereich als Bereich mit Signatur Dim sMailtext As String, sBer() As String ' Bereich bearbeiten und kopieren sBer = Split(ThisWorkbook.Sheets("Tabelle1").Range("Tabelle1").Address, "$") sBer(2) = Val(sBer(2)) - 1 & ":" ' Bereich um 1 Zeile nach oben erw. ThisWorkbook.Sheets("Tabelle1").Range(Join(sBer, "$")) _ .SpecialCells(xlCellTypeVisible).Copy ' Mail erstellen With CreateObject("Outlook.Application").CreateItem(0) .BodyFormat = 2 ' 2=HTML-Format, 3=Richtext .Subject = "Betreff" ' Betreff .To = "An@web.de" ' Empfänger .CC = "AuchAn@web.de" ' Kopie .BCC = "" sMailtext = "Hallo,¶¶hier die Daten" ' Mailtext (optional) sMailtext = Replace(sMailtext, "", vbLf) ' Umbrüche einfügen .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: Range als E-Mail Body einfügen
23.10.2021 10:31:57
Carl
Hallo ihr Zwei,
vielen Dank für die schnelle Rückmeldung.
Kurz vorab: hatte zunächst zwischenzeitlich noch die folgende Idee geprüft gehabt:
Range(ActiveSheet.ListObjects("Tabelle3").ListColumns(1).Range.Select, ActiveSheet.ListObjects("Tabelle3").ListColumns(5).Range.Select).Select
Das habt aber auch leider nicht funktioniert.
Das was Klaus geschrieben passt besser für meine Lösung und funktioniert wunderbar.
Viele Güße nach Freigericht von einem Ex-Altenmittlauer
AW: Range als E-Mail Body einfügen
23.10.2021 10:52:15
volti
Hallo Carl,
die Welt ist manchmal klein. Da laufe ich nachher mit dem 🐕 von Somborn aus hin.
Aber, wo hat Klaus was geschrieben?
Aber wenn Du eine Lösung hast, dann 👍.
Gruß und schönes Wochenende
Karl-Heinz
Anzeige
Für die ganze Tabelle...
25.10.2021 09:10:20
Case
Hallo Karl-Heinz, :-)
... reicht doch: ;-)

ThisWorkbook.Worksheets("Tabelle1").ListObjects("Tabelle1").Range.Copy
Servus
Case
AW: Für die ganze Tabelle...
25.10.2021 09:37:59
Volti
Danke Case,
für den Tipp.
Werde ich mir merken, habe ehrlich gesagt selber noch nicht groß was mit Intelligenten Tabellen gemacht.
Gruß
KH

53 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige