Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Email versenden.Adressen aus Liste
#1
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
Antworten Top
#2
Rainbow 
.to erwartet einen Text. Du lieferst aber ein Datenfeld
Antworten Top
#3
(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.
Antworten Top
#4
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.
Antworten Top
#5
Danke für die Hilfe und die Hinweise.

Gruß dragonxxl
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste