Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

RangeToHTML

Forumthread: RangeToHTML

RangeToHTML
06.05.2024 16:09:37
Theo
Hallo Zusammen,

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:
Userbild

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:
Userbild
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

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

Betreff
Datum
Anwender
Anzeige
AW: RangeToHTML
06.05.2024 17:33:21
{Boris}
Hi,

dann wird Dein gescreenshotteter Bereich (A1:C4) oberhalb einen Rahmen haben (den man nicht sieht, da Zeile 1).
Entferne ihn, und alles sollte gut sein.

VG, Boris
AW: RangeToHTML
06.05.2024 17:34:25
Theo
Oh man!

Manchmal sieht man den Wald vor lauter Bäumen nicht! Das RangeToHtml funktioniert einwandfrei!
Ich hatte nicht gesehen, dass ich in meinem echten Macro beim definieren des Ranges noch mal eine Formatierung (inklusive Borders!) durchgeführt hatte.

Jetzt funzt das so wie es soll. Die Frage ist somit geschlossen!

Trotzdem Danke an alle die sich das zumindest durchgelesen hatten.

Danke
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige