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

Forumthread: mehrere Dateien aus einem Ordner als e-mail Anhang

mehrere Dateien aus einem Ordner als e-mail Anhang
09.09.2013 14:19:18
Lothar
Hallo,
da es auf meinen gestrige Frage anscheinend keine Lösung gibt, kann mir bei meiner neuen Variante vielleicht jemand helfen.
Ein Excel Blatt (Formular zu Materialbestellung) wird nach dem Ausfüllen in eine pdf-Datei umgewandelt und mit Auftragsnummer als Name in einen vorgegebenen Ordner abgelegt (Pfad ist im Blatt, Zelle M5 hinterlegt).
Nach dem Ausfüllen mehrere Formulare möchte ich per VBA alle pdf-Datein diese Ordners
als E-Mail Anhang in eine neu zu erstellende Mail einfügen.
Habe leider weder im Forum noch im Netz einen passenden Code gefunden, immer nur zum Einfügen der aktiven Datei oder einer Datei mit explicit vorgegebenem Pfad und Namen.
vielen Dank für die Hilfe
Gruß Lothar

Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: mehrere Dateien aus einem Ordner als e-mail Anhang
09.09.2013 15:01:44
Rudi
Hallo,
in ein Modul:
Function GetAttArray(strPath As String, strExt As String)
Dim oFS As Object, oFldr As Object, oFile As Object
Dim strTmp As String
If strExt = "" Then strExt = "*"
Set oFS = CreateObject("Scripting.FileSystemObject")
Set oFldr = oFS.getfolder(strPath)
For Each oFile In oFldr.Files
If LCase(oFile) Like strExt Then
strTmp = strTmp & oFile & ";"
End If
Next
strTmp = Left(strTmp, Len(strTmp) - 1)
GetAttArray = Split(strTmp, ";")
End Function
in deinem Code sinngemäß
x=GetAttArray("Range("M5"),"*.pdf")
for i = 0 to ubound(x)
.attachments.add x(i)
next i

Gruß
Rudi

Anzeige
AW: mehrere Dateien aus einem Ordner als e-mail Anhang
09.09.2013 15:13:55
Lothar
Hallo Rudi,
vielen Dank für Deine Antwort.
Hab die Funktion ins gleiche Modul wie den Code für die E-Mail kopiert.
Beim Kopieren der Codeerweiterung hat er bei der Zeile
x=GetAttArray("Range("M5"),"*.pdf")
die Fehlermeldung "Syntaxfehler" gebracht und die gesamte Zeile war Schriftfarbe rot.
Welchen Fehler könnte ich da gemacht haben?
Gruß Lothar

Anzeige
AW: mehrere Dateien aus einem Ordner als e-mail Anhang
09.09.2013 16:10:46
Rudi
Hallo,
mein Fehler. Ein " zuviel.
x=GetAttArray(Range("M5"),"*.pdf")
Gruß
Rudi

AW: mehrere Dateien aus einem Ordner als e-mail Anhang
09.09.2013 16:23:19
Lothar
Hallo Rudi,
vielen Dank für Deine rasche Hilfe.
Es funktioniert jetzt wunderbar, genau so wie ich es mir vorgestellt habe.
Vielen Dank und
Gruß Lothar

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Mehrere Dateien aus einem Ordner als E-Mail-Anhang versenden


Schritt-für-Schritt-Anleitung

Um mehrere PDF-Dateien aus einem Ordner per E-Mail zu versenden, kannst Du VBA (Visual Basic for Applications) in Excel verwenden. Hier ist eine einfache Schritt-für-Schritt-Anleitung:

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Füge ein neues Modul hinzu:

    • Klicke im Menü auf Einfügen > Modul.
  3. Füge den folgenden Code ein:

    Function GetAttArray(strPath As String, strExt As String) As Variant
       Dim oFS As Object, oFldr As Object, oFile As Object
       Dim strTmp As String
       If strExt = "" Then strExt = "*"
       Set oFS = CreateObject("Scripting.FileSystemObject")
       Set oFldr = oFS.GetFolder(strPath)
       For Each oFile In oFldr.Files
           If LCase(oFile) Like strExt Then
               strTmp = strTmp & oFile & ";"
           End If
       Next
       strTmp = Left(strTmp, Len(strTmp) - 1)
       GetAttArray = Split(strTmp, ";")
    End Function
  4. Füge den folgenden Code für das Versenden der E-Mail ein:

    Sub SendEmailsWithAttachments()
       Dim x As Variant
       Dim i As Integer
       Dim olApp As Object
       Dim olMail As Object
    
       Set olApp = CreateObject("Outlook.Application")
       Set olMail = olApp.CreateItem(0)
    
       x = GetAttArray(Range("M5").Value, "*.pdf")
       For i = 0 To UBound(x)
           olMail.Attachments.Add x(i)
       Next i
    
       olMail.Subject = "Ihre PDF-Dateien"
       olMail.Body = "Bitte finden Sie die angehängten PDF-Dateien."
       olMail.Display ' oder .Send um die E-Mail direkt zu senden
    End Sub
  5. Schließe den VBA-Editor und kehre zu Excel zurück.

  6. Fülle das Formular aus und stelle sicher, dass der Pfad zu dem Ordner in Zelle M5 korrekt ist.

  7. Führe das Makro aus, um die E-Mail mit den PDF-Dateien als Anhang zu versenden.


Häufige Fehler und Lösungen

  • Syntaxfehler beim Aufruf der Funktion: Achte darauf, dass Du die richtige Syntax verwendest. Der korrekte Aufruf lautet:

    x = GetAttArray(Range("M5").Value, "*.pdf")

    Stelle sicher, dass die Anführungszeichen korrekt sind.

  • Outlook öffnet sich nicht: Überprüfe, ob Outlook korrekt installiert ist und ob Du die erforderlichen Berechtigungen hast, um es über VBA zu steuern.


Alternative Methoden

Wenn Du keine VBA-Programmierung nutzen möchtest, gibt es auch alternative Möglichkeiten:

  1. Manuelles Anfügen: Du kannst die PDF-Dateien manuell aus dem Ordner auswählen und in eine neue E-Mail einfügen.
  2. E-Mail-Programme: Einige E-Mail-Programme bieten die Möglichkeit, mehrere Dateien aus einem Ordner auszuwählen und direkt anzuhängen.

Praktische Beispiele

  • Beispiel 1: Du hast einen Ordner mit Rechnungen als PDF und möchtest diese alle an einen Kunden versenden. Füge den Pfad in Zelle M5 ein und führe das Skript aus.
  • Beispiel 2: Bei einer Materialbestellung kannst Du das Formular ausfüllen und die generierten PDFs automatisch an die Bestellung anhängen.

Tipps für Profis

  • Dateipfade dynamisch gestalten: Verwende Formeln in Zelle M5, um den Pfad basierend auf anderen Zellen automatisch zu generieren.
  • Fehlerbehandlung einbauen: Füge Fehlerbehandlungsroutinen in das VBA-Skript ein, um sicherzustellen, dass der Code auch bei Problemen robuster ist.

FAQ: Häufige Fragen

1. Wie viele PDF-Dateien kann ich gleichzeitig versenden?
Das hängt von den Einschränkungen Deines E-Mail-Anbieters ab. In der Regel sind es einige MB bis zu mehreren GB.

2. Funktioniert das auch in Excel 2016?
Ja, das Skript ist mit Excel 2016 und neueren Versionen kompatibel.

3. Kann ich auch andere Dateiformate anhängen?
Ja, Du kannst die Dateiendung in der Funktion GetAttArray ändern, um andere Formate wie .docx oder .xlsx zu verwenden.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige