Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1940to1944
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
E-Mail mittels VBA und mehreren Werten
14.08.2023 11:00:11
mb
Hallo zusammen,

ich habe eine Excel Tabelle, aus welcher ich die Werte mehrerer Zeilen in einer HTML formatierten E-Mail versenden will.
Die Tabelle besteht nur aus einer Spalte und hat beliebig viele Zeilen.

Der Mailversand funktioniert soweit wie geplant, indem man auf einen Button drückt.
Allerdings habe ich den Bereich der zu versendenden Zeilen als Range definiert und bestimmt.
Der HTML-Body der Mail kommt aber nicht damit klar, sondern benötigt einzelne Werte.

Wie füge ich die Werte einer Range in einen HTML-Body ein?
Hat jemand Ideen, beispielsweise auch wie ich das umgehen kann?

Hier der relevante Teil des Mailversands.


strHTMLbody = _
"

Auftrag bereit für Bearbeitung!


" & _
"Hallo Mustermann-Team,
" & _
"für Kunden Musterfirma wurden neue Aufträge angelegt und zur Bearbeitung freigegeben.

" & _
{VARIABLE FÜR RANGE} & "

" & _
"Mit freundlichen Grüßen
" & _
"XXXX
"


Danke euch im Voraus!

MfG MB

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

Betreff
Datum
Anwender
Anzeige
AW: E-Mail mittels VBA und mehreren Werten
14.08.2023 11:31:33
Oberschlumpf
Hi,

bitte per Upload eine Bsp-Datei mit Bsp-Daten und deinem ganzen Code für Mailversand hier zeigen.

Ciao
Thorsten
E-Mail mittels VBA und mehreren Werten
14.08.2023 11:31:42
Ulf
Hi MB
~ so
Die Tabelle kann noch Attribute für HTML haben müssen, ergänzen ggf.

'Test

Dim rgQuelle As Range
Public Sub starte()
Set rgQuelle = ThisWorkbook.Worksheets(1).Range("A1:A30")
Dim strOut As String
strOut = rangeToHTML(rgQuelle)
Debug.Print strOut
End Sub
'Funktion aufrufen
Public Function rangeToHTML(ByVal rg As Range) As String
Dim col As New Collection
Dim lngAnzahl As Long
Dim lngZähler As Long
Dim strZelle As String
lngAnzahl = rg.Cells.Count
strZelle = "
"
For lngZähler = 1 To lngAnzahl
strZelle = strZelle & vbCrLf & ""
Next
strZelle = strZelle & vbCrLf & "
" & rg.Cells(lngZähler).Value & "
"
rangeToHTML = strZelle
End Function


hth
Ulf
Anzeige
E-Mail mittels VBA und mehreren Werten
14.08.2023 14:22:30
volti
Hallo,

hier noch eine Alternative ohne RangeToHTML und mit Signatur als Beispiel.
Private Sub Mail_BereichalsBereich_Word1()

Dim sMailtext As String

With CreateObject("Outlook.Application").CreateItem(0)
.Subject = "Mein Betreff ' Betreff"
.To = "AnIhn@Web.de" ' Empfänger
sMailtext = "Auftrag bereit für Bearbeitung!¶" & _
"Hallo Mustermann-Team,¶" & _
"für Kunden Musterfirma wurden neue Aufträge angelegt und zur Bearbeitung freigegeben.¶"
.Getinspector.display
.htmlbody = Replace(sMailtext, "¶", "<br>") & "<br>Mfg<br>" & .htmlbody

ActiveSheet.Range("A1:A20").Copy ' Bereich kopieren
With .Getinspector.WordEditor.Application.Selection
.Start = Len(sMailtext) - 1 ' Mit Position spielen...
.Paste 'Bereich in Mail einfügen
End With

End With

End Sub
Anzeige
E-Mail mittels VBA und mehreren Werten
14.08.2023 11:38:07
Ulf
Will kein HTML,

strZelle = strZelle & vbCrLf & " tr >  td > " & rg.Cells(lngZähler).Value & " / td >  / tr >"

Leerzeichen entfernen
hth
Ulf
E-Mail mittels VBA und mehreren Werten
14.08.2023 13:52:05
Ulf
So nu in schön maskiert und mit Sinn:


Dim rgQuelle As Range
Public Sub starte()
Set rgQuelle = ThisWorkbook.Worksheets(1).Range("A1:A30")
Dim strOut As String
strOut = rangeToHTML(rgQuelle)
Debug.Print strOut
End Sub
'Funktion aufrufen
Public Function rangeToHTML(ByVal rg As Range) As String
Dim lngAnzahl As Long
Dim lngZähler As Long
Dim strZelle As String
lngAnzahl = rg.Cells.Count
strZelle = "<table>"
For lngZähler = 1 To lngAnzahl
strZelle = strZelle & vbCrLf & "<tr><td>" & rg.Cells(lngZähler).Value & "</td></tr>"
Next
strZelle = strZelle & vbCrLf & "</table>"
rangeToHTML = strZelle
End Function
Anzeige
ChatGPT antwortet...
14.08.2023 12:19:30
MCO
Die KI sagt:

Der Code enthält einige Fehler. Hier ist der korrigierte Code:

Dim rgQuelle As Range


Public Sub starte()
Set rgQuelle = ThisWorkbook.Worksheets(1).Range("A1:A30")
Dim strOut As String
strOut = rangeToHTML(rgQuelle)
Debug.Print strOut
End Sub

' Funktion aufrufen
Public Function rangeToHTML(ByVal rg As Range) As String
Dim col As New Collection
Dim lngAnzahl As Long
Dim lngZähler As Long
Dim strZelle As String
lngAnzahl = rg.Cells.Count
strZelle = ""

For lngZähler = 1 To lngAnzahl
strZelle = strZelle & "
" & rg.Cells(lngZähler).Value
Next lngZähler

rangeToHTML = strZelle
End Function

Die Änderungen, die vorgenommen wurden:

Der Zeilenumbruch (vbCrLf) wurde durch das HTML-Zeilenumbruch-Tag (
) ersetzt, um den Zeilenumbruch im HTML-Text darzustellen.
Die Zeilen innerhalb der Schleife wurden korrigiert, um den Wert der aktuellen Zelle richtig in den strZelle-String einzufügen.
Die Variable strZelle wurde korrekt formatiert, um den HTML-Code zu erzeugen.


Probier´s mal aus
Gruß, MCO
Anzeige

301 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige