Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1940to1944
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Ordner suchen und bestimmte Dateien als E-Mail versenden
10.08.2023 08:13:13
earlycon
Guten Morgen zusammen,
mit Excel kann man so herrlich viele Ideen umsetzen. Ich würde mich über Eure Unterstützung zu folgender freuen.

Über ein Rechnungsportal werden uns jeden Tag digitale X-Rechnungen zugestellt. Leider sollen diese erst Anfang 2024 automatisiert verarbeitet werden können, aktuell müssen sie intern per Mail weitergeleitet werden. Die Rechnungen landen in dem Ordner "3-out", jede Rechnung liegt in einem eigenem Ordner. Das sieht dann z.B. so aus:

(1) Ordnername = ID-AVEDOCUKPUBATCH-54121-1689830765407-0-95963400
Inhalt des Ordners =
(2) ID-AVEDOCUKPUBATCH-54121-1689830765407-0-95963400.pdf
(3) ID-AVEDOCUKPUBATCH-54121-1689830765407-0-95963400.XML
(4) ID-AVEDOCUKPUBATCH-54121-1689830765407-0-95963400.gesamt (auch eine XML)
sowie bei Bedarf mehrere Anlagen als PDF, z.B.
Rechnung 123456.pdf
Anlage 123456.pdf

Die Rechnungen werden händisch in einer Excelliste erfasst (Rechnungsnummer, Datum, Rechnungssteller
und an wen die Rechnung per Mail weitergeleitet wird.

Nun möchte ich gerne folgendes erreichen bzw. soll Excel folgendes machen:

1. Nimm die Rechnungsnummer aus Spalte A und schaue im Ordner "3-out" nach,, ob dort ein Rechnungsordner mit dieser Nummer vorhanden ist.
2. Wenn ja, erstelle eine Email und füge aus diesem Rechnungsordner die .pdf (2), .die XML (3), und alle pdf-Anlagen bei (nicht aber die Datei ".XML gesamt" (4)).

Aus Excel-heraus eine E-Mail zu erstellen traue ich mir zu, nicht aber die Abfragen und Übernahme der Anlagen.

Habt Ihr eine Idee, ob und wie man das umsetzen könnte.

Lieben Dank und Euch einen guten Start in den Tag
Stefan





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

Betreff
Datum
Anwender
Anzeige
AW: Ordner suchen und bestimmte Dateien als E-Mail versenden
10.08.2023 12:16:19
MCO
Hallo Stefan!

Ich hab einen Code von mir mal etwas abgewandet.
Mangels Beispieltabelle leider ungetestet.

Schau mal, wie du klar kommst.

Private Sub testmail()

'Dieser Code wird aufgerufen!
Dim attachmentFolder As String

For Each Rchng In Range("A:A").SpecialCells(xlConstants) 'geht alle belegten Zellen in A durch
attachmentFolder = "Pfad_zu_deinem_Ordner\3-out\" & Rchng & "\" ' Hier den Pfad zu deinem Ordner angeben
mail "erster_empfänger@wasweissich.com", "Betreff eintragen", "Text hier", False, True, , attachmentFolder
Next Rchng
End Sub

Sub mail(send_to As String, _
Betreff As String, _
text As String, _
sofort_senden As Boolean, _
del_gesendet As Boolean, _
Optional Kopie_an As String, _
Optional anhang As String)
On Error GoTo 0

Dim MyMessage As Object, MyOutApp As Object, htlm_Vorgabe As String
Dim attachmentFolder As String
Dim attachmentFile As String

Set MyOutApp = CreateObject("Outlook.Application")
Set MyMessage = MyOutApp.CreateItem(0)

attachmentFolder = anhang
Rchng = Dir(anhang, vbDirectory)

With MyMessage
.To = send_to
.CC = Kopie_an
.Subject = Betreff

.Display
.DeleteAfterSubmit = del_gesendet
.HTMLBody = "" & text & "" & .HTMLBody
If attachmentFolder > "" Then
attachmentFile = Dir(attachmentFolder & "\" & Rchng & ".xml")
Do While attachmentFile > ""
.Attachments.Add attachmentFolder & "\" & attachmentFile
attachmentFile = Dir
Loop
attachmentFile = Dir(attachmentFolder & "\*.pdf")
Do While attachmentFile > ""
.Attachments.Add attachmentFolder & "\" & attachmentFile
attachmentFile = Dir
Loop
End If
If sofort_senden Then .Send
End With

Set MyOutApp = Nothing
Set MyMessage = Nothing
End Sub


Gruß, MCO
Anzeige
AW: Ordner suchen und bestimmte Dateien als E-Mail versenden
14.08.2023 12:39:25
earlycon
Hallo MCO,
sorry, dass ich mich jetzt erst melde, aber ich muss mir auf der Arbeit immer Freiraum schaffen für meine Excel-Projekte.
Deinen Code habe ich nun ein wenig angepasst und es funktioniert tadellos, herzlichen Dank für Deine Unterstützung.

Ergänzend noch eine Frage. ich würde gerne vorab die Namen der Rechnungsordner in Spalte A einlesen. Ich vermute, die Abfrage ist so ähnlich wie im 2. Code (Mail) bei der Abfrage der Anlagen. Also im Pfad / Ordner "3-out" nachschauen wie viele Rechnungsordner (z.B. ID-AVEDOCUKPUBATCH-54121-1689830765407-0-95963400) dort liegen und die Namen in Spalte A eintragen. Im Anschluss würde ich dann je Zeile per Button den Code für die Erstellung der Mail laufen lassen.

Wäre toll, wenn Du auch dafür noch eine Idee hättest, das übersteigt leider mein Knowhow... :-)

Liebe Grüße
Stefan
Anzeige
AW: Ordner suchen und bestimmte Dateien als E-Mail versenden
14.08.2023 12:55:45
Rudi Maintaire
Hallo,
Sub OrdnerListe()

Dim FSO As Object, oFolder As Object, oFldr As Object
Dim i As Long
Set FSO = CreateObject("scripting.filesystemobject")
Set oFolder = FSO.getfolder("c:\test") 'anpassen
For Each oFldr In oFolder.subfolders
i = i + 1
Cells(i, 1) = oFldr
Next oFldr
End Sub


Gruß
Rudi
AW: Ordner suchen und bestimmte Dateien als E-Mail versenden
14.08.2023 14:02:15
earlycon
Hallo Rudi,
vielen herzlichen Dank für Deine Unterstützung, das klappt super. Vielleicht noch 2 kleine Ergänzungen... Ich möchte nicht den ganzen Pfad in Spalte A auslesen, sondern nur den letzten Ordnernamen und auch nur wenn dieser mit "ID-AVEDOCUKPUBATCH-54121" beginnt. Der Pfad wäre z.B. dieser:

\\avedocukpubatch\edocserver\edocdirs\xrechnung\uvbus\3-out\ID-AVEDOCUKPUBATCH-54121-1689830765407-0-95964560

Und ich bräuchte dies in Spalte A: ID-AVEDOCUKPUBATCH-54121-1689830765407-0-95964560

Entschuldige, dass hätte ich auch gleich schreiben können.
Für Deine erneute Hilfe danke ich Dir im Voraus.
Viele Grüße
Stefan
Anzeige
AW: Ordner suchen und bestimmte Dateien als E-Mail versenden
14.08.2023 14:13:28
Rudi Maintaire
Hallo,
dann so:
Sub OrdnerListe()

Dim FSO As Object, oFolder As Object, oFldr As Object
Dim i As Long
Const strMatch = "ID-AVEDOCUKPUBATCH-54121*"
Set FSO = CreateObject("scripting.filesystemobject")
Set oFolder = FSO.getfolder("c:\test")
For Each oFldr In oFolder.subfolders
If LCase(oFldr.Name) Like LCase(strMatch) Then
i = i + 1
Cells(i, 1) = oFldr.Name
End If
Next oFldr
End Sub

Gruß
Rudi
AW: Ordner suchen und bestimmte Dateien als E-Mail versenden
14.08.2023 14:54:14
earlycon
Rudi, das ist der absolute Wahnsinn.... :-) Ick freu mir... funktioniert genauso wie gewünscht. Wenn ich doch nur ein wenig mehr Grips im Kopf hätte, Excel (VBA) ist einfach so schön... Vielen lieben Dank Rudi und Dir einen sonnigen Feierabend
Stefan
Anzeige

313 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Anzeige

Infobox zum Thema

EXCEL - Ordner suchen und bestimmte Dateien als E-Mail versenden


Inhaltsverzeichnis


Die Fragestellung


Du möchtest einen VBA-Code in Excel erstellen, der einen bestimmten Ordner durchsucht, bestimmte Dateien auswählt und diese dann als Anhang in einer E-Mail versendet.


Erläuterung des Problems {#erläuterung-des-problems}


Das Problem besteht darin, einen automatisierten Prozess zu erstellen, der:

  1. Einen Ordner auf dem Computer durchsucht.
  2. Bestimmte Dateien basierend auf einem Kriterium (z.B. Dateityp oder Name) auswählt.
  3. Eine E-Mail erstellt und diese Dateien als Anhang hinzufügt.
  4. Die E-Mail an einen oder mehrere Empfänger versendet.

Lösung des Problems {#lösung-des-problems}


Hier ist ein Beispiel-Code, der die oben genannten Schritte mit VBA in Excel durchführt:

Sub SendFilesAsEmail()
    Dim OutlookApp As Object
    Dim MItem As Object
    Dim AttachFile As String
    Dim SourceFolder As String
    Dim File As String
    Dim Filter As String

    ' Outlook-Instanz erstellen
    Set OutlookApp = CreateObject("Outlook.Application")
    Set MItem = OutlookApp.CreateItem(0)

    ' Pfad zum Ordner, der durchsucht werden soll
    SourceFolder = "C:\MeinOrdner\"
    ' Filter für die Dateisuche (z.B. "*.pdf" für PDF-Dateien)
    Filter = "*.pdf"

    ' Erste Datei im Ordner suchen
    File = Dir(SourceFolder & Filter)

    ' Alle passenden Dateien durchgehen und als Anhang hinzufügen
    Do While File <> ""
        AttachFile = SourceFolder & File
        MItem.Attachments.Add AttachFile
        File = Dir  ' Nächste Datei suchen
    Loop

    ' E-Mail-Details festlegen
    With MItem
        .Subject = "Betreff der E-Mail"
        .To = "empfaenger@example.com"  ' Empfänger-Adresse
        .Body = "Hier steht der Text der E-Mail."
        .Send  ' E-Mail senden
    End With

    ' Objekte aufräumen
    Set MItem = Nothing
    Set OutlookApp = Nothing
End Sub

Um dieses Makro zu verwenden, musst du es in den VBA-Editor (mit ALT + F11 zu öffnen) in ein neues Modul einfügen und die Pfade, Filter und E-Mail-Details entsprechend anpassen.


Anwendungsbeispiele aus der Praxis


  • Automatisierte Berichterstattung: Versenden von täglichen, wöchentlichen oder monatlichen Berichten an ein Team oder einen Kunden.
  • Dokumentenmanagement: Versenden von Dokumenten an einen Verteiler, z.B. Protokolle oder Verträge.

Tipps


  • Stelle sicher, dass Microsoft Outlook auf deinem Computer installiert und korrekt konfiguriert ist, da dieses Skript Outlook verwendet.
  • Überprüfe die Sicherheitseinstellungen deines E-Mail-Programms, da das automatische Senden von E-Mails Einschränkungen unterliegen kann.

Verwandte Themenbereiche


  • VBA-Programmierung
  • Automatisierung von E-Mail-Prozessen
  • Datei- und Ordnermanagement in VBA

Zusammenfassung


Mit VBA kannst du einen Prozess erstellen, der automatisch einen Ordner durchsucht, bestimmte Dateien auswählt und diese als Anhang in einer E-Mail versendet. Dieser Code kann für verschiedene Zwecke angepasst werden und hilft, wiederkehrende Aufgaben zu automatisieren und die Effiz

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige