Live-Forum - Die aktuellen Beiträge
Datum
Titel
17.06.2024 19:56:24
17.06.2024 19:39:46
Anzeige
Archiv - Navigation
1528to1532
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

Tabelle per RangeToHtml in der Mail positionieren

Tabelle per RangeToHtml in der Mail positionieren
16.12.2016 15:15:04
Mario
Hallo zusammen,
ich arbeite schon ein paar Tage an einem Makro und es gibt eine Sache, die ich
trotz googlen, suchen etc. nicht hinbekomme.
Ich kopiere eine Tabelle aus einem Excel-Sheet und möchte Sie in der Mail
einfügen.
Das klappt prinzipiell schon, leider aber von der Formatierung nicht.
Ich verwende diese RangeToHtml-Funktion:

Private Function RangetoHTML(objSheet As Worksheet, objRange As Range) As String
Dim strFilename As String
strFilename = Environ$("TEMP") & "\" & Format(Now, "dd-mm-yyyy_hh-mm-ss") & ".htm"
ActiveWorkbook.PublishObjects.Add( _
SourceType:=xlSourceRange, _
Filename:=strFilename, _
Sheet:=objSheet.Name, _
Source:=objRange.Address, _
HtmlType:=xlHtmlStatic).Publish True
RangetoHTML = CreateObject("Scripting.FileSystemObject"). _
GetFile(strFilename).OpenAsTextStream(1, -2).readall
Kill strFilename
End Function

Ich muss zugeben, dass ich die Funktion kopiert und leicht modifiziert habe und nicht 100% verstehe.
Da wäre ich schon für kleine Erläuterungen dankbar.
Kann man hier noch irgendwo align=left oder so einfügen?
Aufgerufen wird die Funktion folgendermaßen:

Public Sub Beispiel(str_startzeile As String, str_endzeile As String)
'Outlook Automatisierungssitzung durch "späte Bindung"
'Variablen Deklarieren und Dimensionieren
Dim objOutlook As Object
Dim objMail As Object
'Das hier war nur für eine Sendkeys variante, wobei diese auch nicht zufriedenstellend war. _
_
_
Dadurch wurde die Tabelle über dem kompletten Text eingefügt
ActiveSheet.Range("C" & str_startzeile & ":Q" & str_endzeile).Select
Selection.Copy
'Objektvariable wird auf Outlook-Application-Objekt festgelegt (Obj in oberster Ebene im  _
Outlook-Objektmodell
'->muss zuerst ein Outlook-Application-Objekt definiert werden, um auf alle anderen  _
Outlook-Objekte zugreifen zu können.
Set objOutlook = CreateObject("Outlook.Application")
'Ein neues Default-Item als Task erstellen
Set objMail = objOutlook.CreateItem(0)
'with um mehrere Dinge mit einem Objekt durchzuführen
With objMail
.To = "bla@bla.de" 'Empfänger
.cc = "bla@bla.de" 'CC-Empfänger
.Subject = "Betreff" 'Betreff
.Importance = 2
.HtmlBody = "Hallo zusammen, bitte um Überprü _
fung des folgenden Makros" & RangeToHTML(ActiveSheet, ActiveSheet.Range("C" & str_startzeile & ":Q" & str_endzeile)) &_
"Mit freundlichen Grüßen"_
"Signatur Zeile 2"
.Display    'nur Anzeigen
'.Send       'direkt senden
End With
Set objMail = Nothing
Set objOutlook = Nothing

Ich übergebe im htmlbody an die Range-Funktion mit den erhaltenen Zeilenwerten
Es wird auch der gewünschte Bereich eingefügt, allerdings stark nach rechts versetzt im Verhältnis zum Text. Ich denke es müsste reichen, wenn ich das align=left
mitgeben könnte.
Als Notlösung wäre auch ein Tipp wie ich Sendkeys so verwenden kann, dass es zwischen dem gewollten Text eingefügt wird. Aber lieber wäre mir eine HTML Lösung

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Tabelle per RangeToHtml in der Mail positionieren
16.12.2016 16:22:39
ChrisL
Hi Mario
Ich kann es mangels Outlook nicht vollständig testen, aber vermutlich reicht ein Replace:
Private Function RangetoHTML(objSheet As Worksheet, objRange As Range) As String
Dim strFilename As String
strFilename = ThisWorkbook.Path & "/test.htm"
ActiveWorkbook.PublishObjects.Add( _
SourceType:=xlSourceRange, _
Filename:=strFilename, _
Sheet:=objSheet.Name, _
Source:=objRange.Address, _
HtmlType:=xlHtmlStatic).Publish True
RangetoHTML = Replace(CreateObject("Scripting.FileSystemObject"). _
GetFile(strFilename).OpenAsTextStream(1, -2).readall, "align=center", "align=left")
Kill strFilename
End Function

Excel wird als HTML Datei im temporären Ordner gespeichert, der Text ausgelesen und dann die Datei gelöscht.
cu
Chris
Anzeige
AW: Tabelle per RangeToHtml in der Mail positionieren
19.12.2016 13:54:35
Mario
Vielen Dank für die Hilfe =)!
Genau diese kleine Änderung habe ich gebraucht.

314 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige