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

Alle xls Dateien aus Ordner versenden

Forumthread: Alle xls Dateien aus Ordner versenden

Alle xls Dateien aus Ordner versenden
31.01.2003 17:29:38
Knud
Hi Helferlein,
Gibt es eine Möglichkeit alle xls-Dateien aus dem Ordner D:\Excel\Auswertung\ als Anhang an einer E-Mail zu versenden?
Aber nicht einzeln, sondern alle auf ein mal. Keine davon ist aktuell geöffnet.

Danke für Tips... Knud

Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: Alle xls Dateien aus Ordner versenden
31.01.2003 18:09:21
Bernd Held

Hallo Knud,

dazu eine Lösung aus meinem Excel-VBA-Kompendium:

Sub EMailVerschickenMitAnhängen()
Dim outObj As Object
Dim Mail As Object
Dim i As Integer

Set outObj = CreateObject("Outlook.Application")
Set Mail = outObj.CreateItem(0)
With Mail
.Subject = "Rechnungen"
.Body = "Sehr geehrte Damen und Herren " & Chr(13) & _
"Bitte prüfen Sie die angehängten Rechnungen" & Chr(13) & _
"Viele Grüße " & Chr(13) & _
Application.UserName
.To = "Rewe@Mac.de"
.CC = "Fibu@Mac.de"
End With
With Application.FileSearch
.NewSearch
.LookIn = "c:\Rechnungen\"
.SearchSubFolders = True
.FileType = msoFileTypeAllFiles
.Execute
For i = 1 To .FoundFiles.Count
Mail.Attachments.Add .FoundFiles(i)
Next i
End With
Mail.Display
Set Mail = Nothing
Set outObj = Nothing
End Sub

Viele Grüße
Bernd
MVP für Microsoft Excel
Noch mehr Excel-Tipps und VBA-Datenbank unter: http://held-office.de


Anzeige
Re: Alle xls Dateien aus Ordner versenden
03.02.2003 08:58:58
Knud

Hi Bernd,
Danke für die Lösung und Sorry, dass ich erst jetzt antworte.
Leider arbeiten wir hier nicht mit Outlook, sondern mit Exchange. Daher geht das Makro so nicht. Bisher habe ich immer mit:

Application.Dialogs(xlDialogSendMail).Show ("abc@xyz.de")

versendet. Das sendet aber nur die aktuelle Mappe, nicht den Inhalt eines ganzen Ordners. Noch eine Idee?

Knud

Anzeige
Re: Alle xls Dateien aus Ordner versenden
03.02.2003 09:53:42
Bernd Held

Halo Knud,
versuchs mal hiermit:

Sub Send_Message()

Dim objSession As Object
Dim objMessage As Object
Dim objRecipient As Object

Set objSession = CreateObject("MAPI.Session")
objSession.Logon

Set objMessage = objSession.Inbox.Messages.Add
objMessage.Subject = "Titel"
objMessage.Text = "Text"
objMessage.Recipients.Add Name:="emai@me"
objMessage.Recipients.Resolve
objMessage.ReadReceipt = True
objMessage.Update
objMessage.Send
End Sub


Sub SENDMAIL()
Dim OL As Object, MailSendItem As Object
Set OL = CreateObject("Outlook.Application")
Set MailSendItem = OL.CreateItem(olMailItem)

With MailSendItem
.Subject = "test"
.To = "email@me"
.Attachments.Add ("c:\Eigene Dateien\test.xls")
.Send
End With
Set OL = Nothing
End Sub

Viele Grüße
Bernd
MVP für Microsoft Excel
Excel-Tipps, VBA in 21 Tagen und VBA-Datenbank unter: http://held-office.de


Anzeige
Re: Alle xls Dateien aus Ordner versenden
03.02.2003 10:14:37
Knud

Hi Bernd,
Jetzt öffnet es mein Programm, adressiert auch richtig, hängt aber nichts dran...

Noch eine Idee?

Re: Alle xls Dateien aus Ordner versenden
03.02.2003 15:01:16
Knud

Hi noch mal,
das Problem liegt wohl in der Zeile
.Attachments.Add ("c:\Eigene Dateien\test.xls").
Es soll nicht eine bestimmte Datei aus diesem Ordner sein, sondern alle Excel-Dateien, die in diesem Ordner liegen... egal, wie sie heißen (sie heissen immer anders, da u.a. Datum und Uhrzeit im Dateinamen stehen)

Danke trotzdem bis hier...

...Knud

Anzeige
Re: Alle xls Dateien aus Ordner versenden
03.02.2003 15:57:39
Bernd Held

Hi Knud,
test mal folgendes Makro:

Sub SENDMAIL()
Dim OL As Object, MailSendItem As Object

Set OL = CreateObject("Outlook.Application")
Set MailSendItem = OL.CreateItem(olMailItem)

With MailSendItem
.Subject = "test"
.To = "Held-office@t-online.de"
Application.FileSearch.NewSearch
Application.FileSearch.LookIn = "D:\Eigene Dateien\"
Application.FileSearch.SearchSubFolders = False
Application.FileSearch.FileType = msoFileTypeAllFiles
Application.FileSearch.Execute
For i = 1 To Application.FileSearch.FoundFiles.Count
.Attachments.Add .FoundFiles(i)
Next i

.Send
End With
Set OL = Nothing
End Sub

Viele Grüße
Bernd
MVP für Microsoft Excel
Excel-Tipps, VBA in 21 Tagen und VBA-Datenbank unter: http://held-office.de


Anzeige
Re: Alle xls Dateien aus Ordner versenden
03.02.2003 16:17:37
Knud

Hi Bernd,
Nach wie vor bemängelt er den Outlook-Part:
Bei Set OL = CreateObject("Outlook.Application") meckert er
Objekterstellung durch ActivX-Komponente nicht möglich.

Schade, trotzdem Danke... Knud

;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Alle XLS-Dateien aus einem Ordner per E-Mail versenden


Schritt-für-Schritt-Anleitung

Um alle XLS-Dateien aus einem Ordner per E-Mail zu versenden, kannst du die folgende VBA-Lösung verwenden. Beachte, dass du dafür Microsoft Outlook installiert haben musst.

  1. Öffne Excel und gehe zum Menü Entwicklertools. Wenn das Menü nicht sichtbar ist, aktiviere es in den Excel-Optionen.

  2. Klicke auf Visual Basic, um den VBA-Editor zu öffnen.

  3. Füge ein neues Modul hinzu, indem du mit der rechten Maustaste auf „VBAProject (DeineDatei.xlsx)“ klickst und dann Einfügen > Modul wählst.

  4. Kopiere und füge den folgenden Code in das Modul ein:

    Sub AlleXLSDateienVersenden()
        Dim OL As Object, MailSendItem As Object
        Dim i As Integer
        Dim OrdnerPfad As String
    
        OrdnerPfad = "D:\Excel\Auswertung\" ' Pfad zum Ordner
    
        Set OL = CreateObject("Outlook.Application")
        Set MailSendItem = OL.CreateItem(0)
    
        With MailSendItem
            .Subject = "XLS Dateien"
            .To = "empfaenger@example.com"
            .Body = "Bitte finden Sie im Anhang alle XLS-Dateien."
    
            ' Alle XLS-Dateien im Ordner anhängen
            Dim Datei As String
            Datei = Dir(OrdnerPfad & "*.xls")
            Do While Datei <> ""
                .Attachments.Add OrdnerPfad & Datei
                Datei = Dir
            Loop
    
            .Send
        End With
    
        Set OL = Nothing
    End Sub
  5. Ändere den OrdnerPfad und die E-Mail-Adresse in der .To-Zeile nach Bedarf.

  6. Führe das Makro aus, um alle XLS-Dateien aus dem angegebenen Ordner zu versenden.


Häufige Fehler und Lösungen

  • Fehler: "Objekterstellung durch ActiveX-Komponente nicht möglich."

    • Stelle sicher, dass Outlook korrekt installiert und konfiguriert ist. Überprüfe auch, ob dein Excel und Outlook dieselbe 32-Bit oder 64-Bit Version haben.
  • Fehler: E-Mail wird ohne Anhänge gesendet.

    • Überprüfe den Pfad im OrdnerPfad und stelle sicher, dass sich tatsächlich XLS-Dateien im angegebenen Verzeichnis befinden.

Alternative Methoden

Falls du nicht mit Outlook arbeiten möchtest, kannst du auch andere E-Mail-Clients oder Skripte nutzen, um einen ganzen Ordner per Mail zu versenden. Eine Alternative wäre, die Dateien zuerst in ein ZIP-Archiv zu packen und dann das Archiv anzuhängen.

Hier ein Beispiel, um einen Ordner zu zippen:

Sub ZipOrdner()
    Dim objShell As Object
    Set objShell = CreateObject("Shell.Application")
    objShell.NameSpace("C:\Ziel\Ordner.zip").CopyHere "D:\Excel\Auswertung\*"
End Sub

Praktische Beispiele

Um alle XLS-Dateien aus einem bestimmten Ordner zu versenden, kannst du das oben genannte Makro anpassen. Hier ist ein weiteres Beispiel, das alle Dateien eines bestimmten Typs (z.B. XLSX) versendet:

Datei = Dir(OrdnerPfad & "*.xlsx")

Auf diese Weise kannst du auch andere Dateitypen versenden, indem du die Erweiterung änderst.


Tipps für Profis

  • Verwende eine Schleife, um die E-Mail-Adressen dynamisch aus einer Excel-Liste zu ziehen.
  • Fehlerbehandlung hinzufügen, um das Skript robuster zu machen.
  • Automatisiere die Ausführung des Skripts mithilfe von Ereignissen, wie z.B. beim Öffnen einer Arbeitsmappe.

FAQ: Häufige Fragen

1. Frage
Kann ich auch andere Dateitypen versenden?
Ja, ändere einfach die Dateiendung im Dir-Befehl, um andere Dateitypen wie .pdf oder .docx anzuhängen.

2. Frage
Wie kann ich das Makro so anpassen, dass es alle Dateien in einem bestimmten Unterordner versendet?
Setze Application.FileSearch.SearchSubFolders = True, um Unterordner zu durchsuchen, allerdings ist FileSearch in neueren Excel-Versionen veraltet. Stattdessen solltest du eine andere Methode zur Dateisuche verwenden.

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