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
Danke für Tips... 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
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
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
Noch eine Idee?
Danke trotzdem bis hier...
...Knud
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
Schade, trotzdem Danke... Knud
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.
Öffne Excel und gehe zum Menü Entwicklertools. Wenn das Menü nicht sichtbar ist, aktiviere es in den Excel-Optionen.
Klicke auf Visual Basic, um den VBA-Editor zu öffnen.
Füge ein neues Modul hinzu, indem du mit der rechten Maustaste auf „VBAProject (DeineDatei.xlsx)“ klickst und dann Einfügen > Modul wählst.
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
Ändere den OrdnerPfad
und die E-Mail-Adresse in der .To
-Zeile nach Bedarf.
Führe das Makro aus, um alle XLS-Dateien aus dem angegebenen Ordner zu versenden.
Fehler: "Objekterstellung durch ActiveX-Komponente nicht möglich."
Fehler: E-Mail wird ohne Anhänge gesendet.
OrdnerPfad
und stelle sicher, dass sich tatsächlich XLS-Dateien im angegebenen Verzeichnis befinden.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
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.
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.
Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden
Suche nach den besten AntwortenEntdecke unsere meistgeklickten Beiträge in der Google Suche
Top 100 Threads jetzt ansehen