Microsoft Excel

Herbers Excel/VBA-Archiv

VBA Mailanhang per Filter


Betrifft: VBA Mailanhang per Filter von: El Django
Geschrieben am: 23.09.2019 19:05:58

Liebes Excelforum,

ich habe einen VBA Code, der generierte Rechnungen automatisch per Mail versendet:

With olApp.CreateItem(0)
.to = strMailAdresse
.cc = "rechnungen@meineAdresse.de"
.Subject = strMailSubject
.body = strMailtext
.Attachments.Add strSpeicherort & strFileName
.Display
'.Send
End With

Bisher haben die Mails immer nur die Rechnung als Anhang (strSpeicherort & strFileName). Weitere Anlagen an die Rechnungen (z.B. Hotelbelege) füge ich der Mail momentan manuell hinzu. Nun würde ich gerne das ganze soweit verbessern, dass, sofern vorhanden, auch Anhänge beigefügt werden. Da sowohl Rechnung als auch jede Anlage im Namen immer die eindeutige Rechnungsnummer beinhalten, wäre es möglich alle Dateien anzuhängen, die dem Filterergebniss von *[Rechnungsnummer]* entsprechen. Im öffnenDialog kann ich z.B. bei Eingabe von *[Rechnungsnummer]* genau diese Liste erhalten. Hat mir jemand einen Tipp, wie ich das Vorhaben umsetzen kann? Vielen Dank im Voraus

  

Betrifft: AW: VBA Mailanhang per Filter von: Nepumuk
Geschrieben am: 23.09.2019 19:37:00

Hallo,

im Prinzip so:

Public Sub Beispiel()
    
    Const FOLDER_PATH As String = "H:\Test\" 'Anpassen !!!
    
    Dim strFilename As String, astrFiles() As String
    Dim Rechnungsnummer As String
    Dim ialngIndex As Long
    Dim olApp As Object
    
    Rechnungsnummer = "123456"
    
    strFilename = Dir$(FOLDER_PATH & "*" & Rechnungsnummer & "*.*")
    Do Until strFilename = vbNullString
        Redim Preserve astrFiles(ialngIndex)
        astrFiles(ialngIndex) = FOLDER_PATH & strFilename
        ialngIndex = ialngIndex + 1
        strFilename = Dir$
    Loop
    
    Set olApp = CreateObject("Outlook.Application")
    
    With olApp.CreateItem(0)
        .to = strMailAdresse
        .cc = "rechnungen@meineAdresse.de"
        .Subject = strMailSubject
        .body = strMailtext
        For ialngIndex = LBound(astrFiles) To UBound(astrFiles)
            .Attachments.Add astrFiles(ialngIndex)
        Next
        .Display
        '.Send
    End With
End Sub

Gruß
Nepumuk


  

Betrifft: AW: VBA Mailanhang per Filter von: Oberschlumpf
Geschrieben am: 23.09.2019 19:43:41

Hi

ich hab eigtl die gleiche Lösungsidee wie Nepumuk, mein Code ist etwas kürzer, da ich den "Umweg" über die Array-Variable auslasse.

With objMail
.to = strMailAdresse
.cc = "rechnungen@meineAdresse.de"
.Subject = strMailSubject
.body = strMailtext
strFileName = Dir(strSpeicherort & "*[Rechnungsnummer]*")
Do Until strFileName = ""
.Attachments.Add strSpeicherort & strFileName
strFileName = Dir
Loop
.Display
'.Send
End With

Hilfts?

Ciao
Thorsten


  

Betrifft: AW: VBA Mailanhang per Filter von: El Django
Geschrieben am: 23.09.2019 20:48:01

@Nepumuk und @Oberschlumpf
Herzlichen Dank Euch beiden. Das funktioniert super, ich kannte die Dir Funktion noch nicht und habe noch nicht verstanden, warum "strFileName = Dir" funktioniert. Da werde ich mich jetzt mal reinlesen.
Als nächstes werde ich nun das Problem lösen, warum die Signatur verschwindet, sobald ich .body verwende. Aber dazu gibt es wahrscheinlich schon einiges hier. LG ElDjango


Beiträge aus dem Excel-Forum zum Thema "VBA Mailanhang per Filter"