Clever-Excel-Forum

Normale Version: Email versenden.Adressen aus Liste
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo Zusammen,

mit dem Makro aus dem Internet versende ich das jeweilig aktive Blatt an eine Mail Adresse.

Gerne würde ich nicht nur aus Zelle A2 in Tabelle16 (Verteiler) die Mail holen sondern aus dem Bereich A2:A20.
So das man die Mail Adressen schön untereinander schreiben kann.

Wenn ich A2:A20 eingebe kommt die Meldung das diese Methode nicht unterstützt wird.

Kann mir bitte jemand helfen ?

Gruß dragonxxl

Code:
Sub einzelnes_Blatt_senden()
'** Das aktive Tabellenblatt wird über Outlook versendet
'** Dimensionierung der Variablen
Dim strBlatt As String
Dim strDatei As String
Dim strPfad As String
Dim outObj As Object
Dim Mail As Object

Set outObj = CreateObject("Outlook.Application")
Set Mail = outObj.CreateItem(0)
'** Pfad für temporäre Zwischenspeicherung angeben
strPfad = "C:\Temp" 'entsprechend anpassen
'** Aktuelles aktives Blatt in neue Arbeitsmappe kopieren
strBlatt = ActiveSheet.Name
'** Gewähltes Tabellenblatt kopieren
Sheets(strBlatt).Copy
'** Blatt temporär in vorgegebenes Verzeichnis abspeichern
ActiveWorkbook.SaveAs strPfad & "\" & ActiveSheet.Name

'** Pfad und Dateiname der neuen Datei zwischenspeichern
strDatei = ActiveWorkbook.FullName


'** Mail erzeugen
With Mail
.GetInspector.Display
              olOldbody = .htmlBody
.To = Tabelle16.Range("A2:A20").Value   'Blattname Verteiler
'.CC = ""
.Subject = "Test" 'Betreff
.BodyFormat = 2 '2 = HTML, 1 = Text
.Attachments.Add strDatei 'Anhang
.htmlBody = "Hallo!<br><br>Anbei gewünschte Informationen.<br><br>" & _
                          "Test Test <br><br>" & Range("X1") & _
                          "<br><br><br><br><br>" & olOldbody
End With

'** Erzeugte Datei schließen
Workbooks(Dir(strDatei)).Close

'** Erzeugte Datei wieder löschen
Kill (strDatei)

'** E-Mail anzeigen
Mail.Display
End Sub
.to erwartet einen Text. Du lieferst aber ein Datenfeld
(07.12.2022, 14:32)ralf_b schrieb: [ -> ].to erwartet einen Text. Du lieferst aber ein Datenfeld

Das verstehe ich nicht,weil wenn ich nur A2 eingebe wird die Adresse in A2 gelesen und die Mail auch versendet.
vba Grundlagen.   der Defaultrückgabewert einer Zelle ist  deren Inhalt. Bei mehren Zellen ist es ein Datenfeld. 
die Werte im Datenfeld müssen in einen Text umgewandelt werden, der vom Empfänger akzeptiert wird.  

.to = Join(Application.Transpose(Tabelle2.Range("A2:A20")), ";")
im Datenbereich sollten keine leeren Zellen sein.
Danke für die Hilfe und die Hinweise.

Gruß dragonxxl