RangeToHTML
06.05.2024 16:09:37
Theo
Mein Problem betrifft weniger die VBA als die HTML-Seite, ich hoffe aber, das es genügend Experten hier gibt die beides können :-)
Ich nutze VBA um verschiedene Tabellen im Body eines Outlook Mails einzubetten. Die Tabellen sehen in etwas so aus wie in dem Screenshot, wobei die Anzahl der Spalten und Zeilen variable ist. Allen gemeinsam ist, dass die erste Zeile nur eine Überschrift enthält und somit auch keinen Rahmen hat:
Ich ersetze einen Bestimmten String (hier %TABELLE1% ) im MailBody durch die Tabelle mithilfe der RangeToHtml Funktion, die ich irgendwo im Internet gefunden hatte.
set RngTbl =ws.range("A1:C4")
bodyStr = Replace(bodyStr, "%TABELLE1%", RangeToHtml(ws.Name, RngTbl.Address))
Private Function RangeToHtml(ByVal pvstrWorksheetName As String, ByVal pvstrRangeAddress As String) As String
Dim objFilesytem As Object, objTextstream As Object
Dim objPublishObject As PublishObject
Dim strFilename As String, strTempText As String
strFilename = Environ$("temp") & "\" & Format(Now, "dd-mm-yy_hh-mm-ss") & ".htm"
Set objPublishObject = ThisWorkbook.PublishObjects.Add( _
SourceType:=xlSourceRange, _
Filename:=strFilename, _
Sheet:=pvstrWorksheetName, _
Source:=pvstrRangeAddress, _
HtmlType:=xlHtmlStatic)
Call objPublishObject.Publish(Create:=True)
Set objFilesytem = CreateObject("Scripting.FileSystemObject")
Set objTextstream = objFilesytem.GetFile(strFilename).OpenAsTextStream(1, -2)
strTempText = objTextstream.ReadAll
Call objTextstream.Close
RangeToHtml = Replace(strTempText, "align=center x:publishsource=", "align=left x:publishsource=")
Set objPublishObject = Nothing
Set objTextstream = Nothing
Set objFilesytem = Nothing
Call Kill(PathName:=strFilename)
End Function
Blöderweise schaffe ich es nicht die Einbettung in mein HTML ohne den Rahmen in der ersten Zeile hinzubekommen, denn in Outlook sieht das dann so aus:
Ich habe auch schon versucht den RangeToHTML ohne die erste Zeile zu definieren und die Tabellenüberschrift direkt in HTML einzufügen, aber dann habe ich einen Zeilenumbruch zwischen der Tabelle und der "Überschrift"
Hat jemand eine Idee wie ich das geändert bekomme?
Danke und Gruss
Theo
Anzeige