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

Mit OutMail.Attachments.Add mehrere Dateien anhäng

Forumthread: Mit OutMail.Attachments.Add mehrere Dateien anhäng

Mit OutMail.Attachments.Add mehrere Dateien anhäng
19.06.2019 00:06:14
Sabrina
Hallo.
ich maile mit der Zeile
OutMail.Attachments.Add PDF_Speicher
die PDF als Anhang welche in PDF_Speicher hinterlegt ist.
Wie müss die Zeile lauten wenn mehre Dateien versendet werden sollen?
Z.B. PDF_Speicher & PDF_Speicher2
LG
Sabbel

Pfad = "D:\PDF\
PDF_Speicher = Pfad & "Rechnung.pdf"
PDF_Speicher2 = Pfad & "Erinnerung.pdf"
OutMail.Subject = "Rechnung"
OutMail.Body = " Inhalt"
' Anhang hinzufügen:
OutMail.Attachments.Add PDF_Speicher
'...und anzeigen
OutMail.Display
' Objekte sauber auflösen
Set OutMail = Nothing
Set OutApp = Nothing
' Tabelle schließen
Application.DisplayAlerts = False

Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Mit OutMail.Attachments.Add mehrere Dateien anhäng
19.06.2019 05:16:47
Nepumuk
Hallo Sabbel,
einfach so:
OutMail.Attachments.Add PDF_Speicher
OutMail.Attachments.Add PDF_Speicher2

Gruß
Nepumuk
AW: Mit OutMail.Attachments.Add mehrere Dateien anhäng
19.06.2019 08:15:30
Rob
Wenn Du mehr als nur zwei Dateien hast, könntest die auch mittels VBA zu einer Zip-Datei komprimieren und anhängen. Bei Interesse kann ich gerne mal den Code posten.
Anzeige
AW: Mit OutMail.Attachments.Add mehrere Dateien anhäng
19.06.2019 15:45:41
Niclaus
Hallo Nepumuk
Mehrere Dateien mittels VBA zu einer Zip-Datei komprimieren und anhängen: Das interessiert mich. Kannst Du den Code hochladen?
Dank und Gruss Niclaus
AW: Mit OutMail.Attachments.Add mehrere Dateien anhäng
19.06.2019 21:00:18
Rob
Hi Niclaus,
nachfolgend der Code. Bei Fragen - fragen!

Option Explicit
Private Sub NewZip(sPath)
'Leere ZipFile erstellen
If Len(Dir(sPath)) > 0 Then Kill sPath
Open sPath For Output As #1
Print #1, Chr$(80) & Chr$(75) & Chr$(5) & Chr$(6) & String(18, 0)
Close #1
End Sub
Sub ZipFile()
Dim FileNameZip, SourceFolder
Dim strDate As String, DefPath As String
Dim oApp As Object
'Quell- und Zielpfad angeben
SourceFolder = Environ("userprofile") & "\Desktop\Test\" 'Hier Quell-Pfad der zu  _
komprimierenden Dateien anpassen
DefPath = Environ("userprofile") & "\Desktop\" 'Hier Ziel-Pfad anpassen. Achtung! Quell-  _
und Zielpfad dürfen nicht übereinstimmen!
'Dynamischen Namen für die Zip-Datei vergeben
strDate = Format(Now, " dd-mmm-yy h-mm-ss")
FileNameZip = DefPath & "ZipFiles " & strDate & ".zip" 'Name der Zip-Datei bei Bedarf  _
anpassen
'Leere Zip-File erstellen
NewZip (FileNameZip)
Set oApp = CreateObject("Shell.Application")
'Dateien aus SourceFolder in FileNameZip kopieren
oApp.Namespace(FileNameZip).CopyHere oApp.Namespace(SourceFolder).Items
'Warten bis Komprimierung beendet ist
On Error Resume Next
Do Until oApp.Namespace(FileNameZip).Items.Count = _
oApp.Namespace(SourceFolder).Items.Count
Application.Wait (Now + TimeValue("0:00:01"))
Loop
On Error GoTo 0
End Sub
Gruß Rob
Anzeige
AW: Mit OutMail.Attachments.Add mehrere Dateien anhäng
19.06.2019 21:02:36
Rob
Nochmal etwas übersichtlicher ohne Kommentarzeilen:

Private Sub NewZip(sPath)
If Len(Dir(sPath)) > 0 Then Kill sPath
Open sPath For Output As #1
Print #1, Chr$(80) & Chr$(75) & Chr$(5) & Chr$(6) & String(18, 0)
Close #1
End Sub
Sub ZipFile()
Dim FileNameZip, SourceFolder
Dim strDate As String, DefPath As String
Dim oApp As Object
SourceFolder = Environ("userprofile") & "\Desktop\Test\"
DefPath = Environ("userprofile") & "\Desktop\"
strDate = Format(Now, " dd-mmm-yy h-mm-ss")
FileNameZip = DefPath & "ZipFiles " & strDate & ".zip"
NewZip (FileNameZip)
Set oApp = CreateObject("Shell.Application")
oApp.Namespace(FileNameZip).CopyHere oApp.Namespace(SourceFolder).Items
On Error Resume Next
Do Until oApp.Namespace(FileNameZip).Items.Count = _
oApp.Namespace(SourceFolder).Items.Count
Application.Wait (Now + TimeValue("0:00:01"))
Loop
On Error GoTo 0
End Sub

Anzeige
AW: Zip Attachments
20.06.2019 13:10:30
Niclaus
Hallo Rob - diesmal mit richtigem Namen ;-)
Vielen Dank! Klappt bestens!
Grüsse Niclaus
;
Anzeige
Anzeige

Infobox / Tutorial

Mehrere Dateien mit OutMail.Attachments.Add anhängen


Schritt-für-Schritt-Anleitung

Um mehrere Dateien mit OutMail.Attachments.Add in Excel VBA anzuhängen, kannst du die folgenden Schritte befolgen:

  1. Definiere die Pfade der Dateien: Erstelle Variablen, die auf die Speicherorte deiner Dateien zeigen.

    Pfad = "D:\PDF\"
    PDF_Speicher = Pfad & "Rechnung.pdf"
    PDF_Speicher2 = Pfad & "Erinnerung.pdf"
  2. Erstelle die E-Mail: Setze die Betreffzeile und den E-Mail-Inhalt.

    OutMail.Subject = "Rechnung"
    OutMail.Body = "Inhalt"
  3. Füge die Anhänge hinzu: Verwende OutMail.Attachments.Add, um die Dateien anzuhängen.

    OutMail.Attachments.Add PDF_Speicher
    OutMail.Attachments.Add PDF_Speicher2
  4. Zeige die E-Mail an: Verwende OutMail.Display, um die E-Mail anzuzeigen.

    OutMail.Display
  5. Objekte auflösen: Setze die Objekte auf Nothing, um Speicher freizugeben.

    Set OutMail = Nothing
    Set OutApp = Nothing

Häufige Fehler und Lösungen

  • Fehler: E-Mail wird ohne Anhänge gesendet

    • Lösung: Überprüfe, ob die Pfade zu den Dateien korrekt sind und dass die Dateien tatsächlich existieren.
  • Fehler: VBA gibt einen Laufzeitfehler aus

    • Lösung: Stelle sicher, dass das Outlook-Objekt korrekt instanziiert wurde, bevor du Anhänge hinzufügst.

Alternative Methoden

Wenn du viele Dateien hast, kannst du sie auch in eine ZIP-Datei komprimieren und dann die ZIP-Datei anhängen. Hier ist ein einfaches Beispiel, um eine ZIP-Datei zu erstellen und sie als Anhang hinzuzufügen:

Sub ZipFile()
    ' Dein Code zum Erstellen der ZIP-Datei hier
End Sub

Das ZIP-Verfahren ist besonders nützlich, wenn du eine große Anzahl von Dateien versenden möchtest.


Praktische Beispiele

Hier ist ein vollständiger Beispielcode für das Hinzufügen von mehreren Anhängen:

Sub SendEmailWithAttachments()
    Dim OutApp As Object
    Dim OutMail As Object
    Dim Pfad As String
    Dim PDF_Speicher As String
    Dim PDF_Speicher2 As String

    Set OutApp = CreateObject("Outlook.Application")
    Set OutMail = OutApp.CreateItem(0)

    Pfad = "D:\PDF\"
    PDF_Speicher = Pfad & "Rechnung.pdf"
    PDF_Speicher2 = Pfad & "Erinnerung.pdf"

    OutMail.Subject = "Rechnung"
    OutMail.Body = "Inhalt"
    OutMail.Attachments.Add PDF_Speicher
    OutMail.Attachments.Add PDF_Speicher2
    OutMail.Display

    Set OutMail = Nothing
    Set OutApp = Nothing
End Sub

Tipps für Profis

  • Verwende Schleifen: Wenn du viele Dateien hast, kannst du eine Schleife verwenden, um die Anhänge hinzuzufügen. Dies macht den Code flexibler.

    Dim i As Integer
    Dim Dateinamen As Variant
    Dateinamen = Array("Rechnung.pdf", "Erinnerung.pdf")
    
    For i = LBound(Dateinamen) To UBound(Dateinamen)
      OutMail.Attachments.Add Pfad & Dateinamen(i)
    Next i
  • Fehlerbehandlung: Füge Fehlerbehandlungsroutinen hinzu, um sicherzustellen, dass dein Code nicht bei einem Problem abbricht.


FAQ: Häufige Fragen

1. Kann ich auch Dateien aus einem anderen Verzeichnis anhängen? Ja, du kannst den Pfad zu den Dateien entsprechend anpassen. Stelle sicher, dass die Pfade korrekt sind.

2. Was ist, wenn ich eine Datei nicht anhängen kann? Überprüfe, ob die Datei existiert und ob du die richtigen Berechtigungen hast, um darauf zuzugreifen.

3. Wie kann ich Anhänge komprimieren, bevor ich sie sende? Du kannst VBA verwenden, um die Dateien zu einer ZIP-Datei zu komprimieren, bevor du sie als Anhang hinzufügst. Der bereitgestellte Code für das Zippen von Dateien kann dir dabei helfen.

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