Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA Serienmail mit individuellem Anhang

Forumthread: VBA Serienmail mit individuellem Anhang

VBA Serienmail mit individuellem Anhang
08.09.2022 00:25:43
Steffen
Hallo, ich versuche seit Stunden verzweifelt eine Individuelle Serienmail mit VBA zu erstellen. Den Code dazu habe ich beim Googeln gefunden und an meine Bedürfnisse angepasst.
Ich habe eine Excel Tabelle gebaut und Mailadressen und Rechnungsnummern eingetragen sowie meine Textbausteine.
Jetzt soll an jede Adresse die passende PDF sowie der entsprechende Betreff gesendet werden.
Ich sage also VBA es soll eine Mail erstellen und den Anhang mit Pfad:
C:\Users\zocke\Desktop\Neuer Ordner (4)"Rechnungsnummer".pdf anhängen.
Wenn ich hier in VBA direkt 55000 eingebe funktioniert das ( es wird die PDF mit Rechnungsnummer 55000 angehängt), wenn ich die Zelle in der die Rechnungsnummer gespeichert wurde über Range(A1).Value bzw. Cells (1,1).Value anspreche klappts auch.
Nur wenn ich versuche die Zeile variabel zu setzen z.B (Ai) oder Cells(i,1) einsetze gehts nicht mehr.
Die Zeile müsste etwa so aussehen:
.attachments.Add "C:\Users\zocke\Desktop\Neuer Ordner (4)" + "" + Cells(i,1).Value + pdf
Bis auf diesen Punkt funktioniert der Code perfekt und es gehen nacheinander die Mails an die entsprechenden Adressen und auch die Betreffzeilen passen.
Ich habe versucht die Pfade direkt aus den Zellen zu lesen oder via Hyperlink anzusteuern. Das hat nicht geklappt worauf ich mir die den Datei-Pfad aus Einzelbausteinen erzeugt habe Pfad + Rechnungsnummer +.pdf .
Ich denke das sollte der richtige Weg sein nur fehlt mir die passende Syntax damit bei jedem Schleifenumlauf die nächste Rechnungsnummer in den Pfad gebaut wird.
Also Rechnung = Range("I2").Value zu Rechnung = Range("I(variabel)").Value
Hier der komplette Code:

Sub Excel_Serienmail_via_Outlook_Senden()
Dim OutApp As Object, Mail As Object
Dim i As Integer
Dim Nachricht
Dim Rechnung As String
Pfad = "C:\Users\zocke\Desktop\Neuer Ordner (4)"
pdf = ".pdf"
Rechnung = Range("I2").Value
For i = 1 To 2 'Anzahl der Mails
'Variablen müssen bei jeder Schleife neu initalisiert werden
Set OutApp = CreateObject("Outlook.Application")
Set Nachricht = OutApp.CreateItem(0)
With Nachricht
.To = Cells(i, 1) 'Adresse
.Subject = Cells(i, 5) 'Betreffzeile
.attachments.Add "C:\Users\zocke\Desktop\Neuer Ordner (4)" + "\" + Rechnung + pdf
.Body = Cells(i, 3) & Chr$(10) & Chr$(10) & Cells(i, 6) & Space(1) & _
Cells(i, 5) & Chr$(10) & Chr$(10) & Cells(i, 16) 'Sendetext
'Hier wird die Mail gleich in den Postausgang gelegt
'und die Sicherheitsabfrage muss jedesmall bestätigt werden
'.Send
'Hier wird die Mail "angezeigt"
'aber gleich versendet,... OHNE Sicherheitsabrage
.Display
SendKeys "%s", True
End With
'Variablen zurücksetzen sonst geht es nicht
Set OutApp = Nothing 'CreateObject("Outlook.Application")
Set Nachricht = Nothing 'OutApp.CreateItem(0)
Application.Wait (Now + TimeValue("0:00:01"))
Next i
End Sub
Anzeige

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

Betreff
Datum
Anwender
Anzeige
Pfad Anhang als STRING
08.09.2022 07:07:39
MCO
Guten Morgen, Steffen!
An sich weißt du doch wie es geht, du hast es an anderer Stelle schon korrekt hinbekommen: Texte werden nicht mit "+" verknüpft sondern mit "&".
Somit wird aus

.attachments.Add "C:\Users\zocke\Desktop\Neuer Ordner (4)" + "\" + Cells(i,1).Value + pdf

.attachments.Add "C:\Users\zocke\Desktop\Neuer Ordner (4)\" & Cells(i,1).Value & ".pdf"
Gruß, MCO
Anzeige
AW: Pfad Anhang als STRING
08.09.2022 18:32:52
Steffen
Hatte mir schon gedacht, dass das nur eine Kleinigkeit ist. Hat wunderbar funktioniert.
Vielen Dank!
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Serienmail mit individuellem Anhang in Excel und Outlook


Schritt-für-Schritt-Anleitung

  1. Vorbereiten der Excel-Tabelle: Erstelle eine Excel-Tabelle mit folgenden Spalten:

    • A: E-Mail-Adressen
    • B: Betreff
    • C: Nachrichtentext
    • D: Rechnungsnummer
    • E: Weitere Informationen
  2. VBA-Editor öffnen: Drücke ALT + F11, um den VBA-Editor zu öffnen.

  3. Neues Modul hinzufügen: Klicke mit der rechten Maustaste auf "VBAProject (deineDatei.xlsx)" > Einfügen > Modul.

  4. Code eingeben: Füge den folgenden VBA-Code ein und passe ihn an deine Bedürfnisse an:

    Sub Excel_Serienmail_via_Outlook_Senden()
       Dim OutApp As Object, Nachricht As Object
       Dim i As Integer
       Dim Rechnung As String
       Pfad = "C:\Users\zocke\Desktop\Neuer Ordner (4)"
       pdf = ".pdf"
    
       For i = 1 To 2 'Anzahl der Mails
           Set OutApp = CreateObject("Outlook.Application")
           Set Nachricht = OutApp.CreateItem(0)
           Rechnung = Cells(i, 4).Value ' Rechnungsnummer aus Spalte D
           With Nachricht
               .To = Cells(i, 1) ' E-Mail-Adresse aus Spalte A
               .Subject = Cells(i, 2) ' Betreff aus Spalte B
               .attachments.Add Pfad & "\" & Rechnung & pdf ' Anhang hinzufügen
               .Body = Cells(i, 3) ' Nachrichtentext aus Spalte C
               .Display ' Mail anzeigen
           End With
           Set OutApp = Nothing
           Set Nachricht = Nothing
           Application.Wait (Now + TimeValue("0:00:01"))
       Next i
    End Sub
  5. Makro ausführen: Schließe den VBA-Editor und gehe zurück zu Excel. Drücke ALT + F8, wähle das Makro Excel_Serienmail_via_Outlook_Senden und klicke auf Ausführen.


Häufige Fehler und Lösungen

  • Fehler: Anhang wird nicht gefunden
    Stelle sicher, dass der Pfad zum Anhang korrekt ist. Überprüfe, ob die Rechnungsnummer die richtige Datei referenziert.

  • Fehler: E-Mail wird nicht gesendet
    Achte darauf, dass Outlook richtig konfiguriert ist und Du die Sicherheitseinstellungen für Makros in Excel angepasst hast.

  • Fehler: Syntaxfehler im VBA-Code
    Verwende & statt + zur Verkettung von Strings in VBA. Beispiel:

    .attachments.Add "C:\Users\zocke\Desktop\Neuer Ordner (4)\" & Cells(i, 4).Value & ".pdf"

Alternative Methoden

  • Word Serienmail mit Anhang: Wenn Du mit Word arbeiten möchtest, kannst Du eine ähnliche Vorgehensweise verwenden, um eine Serienmail mit individuellem Anhang zu erstellen. Der Prozess ist ähnlich, allerdings musst Du die Word VBA-Methoden nutzen.

  • Outlook Serienmail mit PDF Anhang: Du kannst auch direkt in Outlook eine Serienmail erstellen, indem Du die Seriendruckfunktion nutzt und die PDFs manuell hinzufügst.


Praktische Beispiele

  • Beispiel 1: Du möchtest eine Serienmail mit individuellen Anhang für Rechnungen senden. Stelle sicher, dass Deine Excel-Tabelle die Rechnungsnummer in einer separaten Spalte hat. Verwende den oben genannten VBA-Code, um die Mails zu versenden.

  • Beispiel 2: Wenn Du nur einen Anhang versenden möchtest, ändere die Bedingung im Code, um nur einen bestimmten Index in der Schleife zu verwenden.


Tipps für Profis

  • Fehlerprotokollierung: Integriere eine Fehlerprotokollierung in Deinen VBA-Code, um Probleme beim Senden von Mails zu identifizieren.

  • Automatisierung: Überlege, ob Du den Prozess automatisieren kannst, indem Du das Makro regelmäßig zu festgelegten Zeiten ausführst.

  • Benutzerdefinierte Inhalte: Du kannst den Body der E-Mail dynamisch gestalten, indem Du verschiedene Textbausteine aus Deiner Tabelle kombinierst.


FAQ: Häufige Fragen

1. Kann ich mehrere Anhänge in einer Serienmail versenden?
Ja, Du kannst mehrere Anhänge hinzufügen, indem Du die .attachments.Add-Methode mehrmals aufrufst.

2. Funktioniert dieser Code mit Outlook 365?
Ja, der Code funktioniert auch mit Outlook 365. Achte darauf, dass die Sicherheitseinstellungen entsprechend konfiguriert sind.

3. Wie kann ich den Code anpassen, um mehr als zwei Mails zu versenden?
Ändere den Wert in For i = 1 To 2 auf die Anzahl der Mails, die Du versenden möchtest.

4. Was tue ich, wenn ich eine Fehlermeldung erhalte?
Überprüfe die Zeile, in der der Fehler auftritt, und vergleiche sie mit den Beispielen und Lösungen in diesem Artikel.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige