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.