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
Eine bestimmte (die neuste) Datei an ein Mail anhängen
18.08.2023 15:49:31
Patrick
Hallo zusammen

Ich versuche gerade ein Bestellformular zu erstellen, welches nach dem Ausfüllen in ein pdf umgewandelt wird und per Mail versendet.

Das habe ich dazu (mit Hilfe der Forum Inhalte hier) zusammen geschustert.

=========================================================
Sub ToPdfToMail()
Dim sPathPDF$
'Dim sPath As String
Dim objOutlook As Object, objMail As Object

'PDF erstellen ************************************
sFile = "Bestellung_KD-NR_" & Range("D3").Value & "_vom_" & Format(Date, "YYYYMMDD") & "-" & Format(Time, "hhmm") & ".xlsm"
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
ThisWorkbook.Path & "\" & "Bestellung_KD-NR_" & Range("D3").Value & "_vom_" & Format(Date, "YYYYMMDD") & "-" & Format(Time, "hhmm") & ".pdf", Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
False

'Mail erstellen ************************************
Set objOutlook = CreateObject("Outlook.Application")
Set objMail = objOutlook.CreateItem(0)
With objMail
.To = "verkauf@firma.test" 'An-Empfänger
.CC = "" 'Cc-Empfänger
.BCC = "" 'BCc-Empfänger
.Subject = "Bestellung von Kundennummer: " & Range(" D3").Value 'Betreff
.Body = "Liebes Verkaufs-Team!" & vbNewLine & vbNewLine & "Anbei erhalten Sie unsere Bestellung." & vbNewLine & "Wir bitten um Übersendung der Auftragsbestätigung." & vbNewLine & vbNewLine & "Besten Dank." & vbNewLine & vbNewLine & "Mit freundlichen Grüssen" & vbNewLine & Range("D1").Value & vbNewLine & Range("D2").Value 'Nachricht
.Attachments.Add sPath 'Anhang
.Display 'Mail anzeigen
'.Send 'Mail versenden
End With
Set objMail = Nothing
Set objOutlook = Nothing
End Sub
=========================================================

Das Script erstellt das pdf (Bestellung_KD-NR_123456_vom_20230818-0819.pdf) und die Mail öffnet sich.

Allerdings wird das pdf nicht an die geöffnet Mail angehängt.

Könnt ihr mir hier weiterhelfen, wie ich es schaffe, dass immer die neuste der Dateien an das Mail angehängt wird, da alle Bestellungen in dieses Verzeichnis gespeichert werden.

Besten Dank.

Grüsse
Patrick

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Eine bestimmte (die neuste) Datei an ein Mail anhängen
18.08.2023 16:19:24
Raimund
Hi Patrick

Es sieht so aus, als hättest du vergessen, den Dateipfad für das PDF in die Variable sPathPDF einzufügen, bevor du versuchst, die PDF-Datei anzuhängen.
Versuche folgendes:

Sub ToPdfToMail()
Dim sPathPDF As String
Dim objOutlook As Object, objMail As Object

' PDF erstellen ************************************
sPathPDF = ThisWorkbook.Path & "\" & "Bestellung_KD-NR_" & Range("D3").Value & "_vom_" & Format(Date, "YYYYMMDD") & "-" & Format(Time, "hhmm") & ".pdf"
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=sPathPDF, Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False

' Mail erstellen ************************************
Set objOutlook = CreateObject("Outlook.Application")
Set objMail = objOutlook.CreateItem(0)
With objMail
.To = "verkauf@firma.test" ' An-Empfänger
.CC = "" ' Cc-Empfänger
.BCC = "" ' BCc-Empfänger
.Subject = "Bestellung von Kundennummer: " & Range("D3").Value ' Betreff
.Body = "Liebes Verkaufs-Team!" & vbNewLine & vbNewLine & "Anbei erhalten Sie unsere Bestellung." & vbNewLine & "Wir bitten um Übersendung der Auftragsbestätigung." & vbNewLine & vbNewLine & "Besten Dank." & vbNewLine & vbNewLine & "Mit freundlichen Grüssen" & vbNewLine & Range("D1").Value & vbNewLine & Range("D2").Value ' Nachricht
.Attachments.Add sPathPDF ' PDF-Anhang
.Display ' Mail anzeigen
' .Send ' Mail versenden
End With
Set objMail = Nothing
Set objOutlook = Nothing
End Sub


Gruss
Raimumd
Anzeige
AW: Eine bestimmte (die neuste) Datei an ein Mail anhängen
18.08.2023 16:35:08
Patrick
Hallo Raimund

Ich wusste es, dass es für jemand, der sich damit auskennt ein "klacks" ist.

GANZ herzlichen Dank für die Hilfe und die schmeichelnde Formulierung "vergessen" :-).

Danke nochmal.

Gruss
Patrick

Thema von meiner Seite aus erledigt.
=======================
C L O S E D
=======================

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Anzeige

Infobox zum Thema

EXCEL - Eine bestimmte (die neuste) Datei an ein Mail anhängen


Inhaltsverzeichnis


Die Fragestellung


Du möchtest die neueste Datei aus einem bestimmten Verzeichnis automatisch als Anhang in einer E-Mail über Outlook versenden.


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


In einem Ordner können sich mehrere Dateien befinden, und es kann erforderlich sein, die neueste Datei basierend auf dem Erstellungs- oder Änderungsdatum zu identifizieren und diese dann als Anhang zu einer E-Mail hinzuzufügen.


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


Um die neueste Datei in einem Verzeichnis zu finden und diese an eine E-Mail anzuhängen, kannst du folgenden VBA-Code verwenden:

Sub AttachLatestFileAndSendEmail()
    Dim outlookApp As Object
    Dim mail As Object
    Dim folderPath As String
    Dim file As String
    Dim latestFile As String
    Dim latestDate As Date
    Dim fs As Object
    Dim dir As Object
    Dim fileObj As Object

    ' Pfad zum Verzeichnis festlegen
    folderPath = "C:\Pfad\Zum\Verzeichnis\" ' Anpassen an den Pfad des Verzeichnisses

    ' Outlook-Instanz erstellen
    Set outlookApp = CreateObject("Outlook.Application")
    Set mail = outlookApp.CreateItem(0)

    ' FileSystemObject erstellen
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set dir = fs.GetFolder(folderPath)

    ' Erstes Datum sehr weit in der Vergangenheit setzen
    latestDate = DateSerial(1900, 1, 1)

    ' Alle Dateien im Verzeichnis durchgehen
    For Each fileObj In dir.Files
        ' Überprüfen, ob die Datei neuer ist als die bisher neueste
        If fileObj.DateLastModified > latestDate Then
            latestDate = fileObj.DateLastModified
            latestFile = fileObj.Path
        End If
    Next fileObj

    ' E-Mail vorbereiten
    With mail
        .To = "empfaenger@example.com" ' Anpassen an die E-Mail-Adresse des Empfängers
        .Subject = "Betreff der E-Mail" ' Anpassen an den Betreff der E-Mail
        .Body = "Hier steht der Text der E-Mail." ' Anpassen an den Text der E-Mail
        ' Die neueste Datei anhängen
        If latestFile <> "" Then
            .Attachments.Add latestFile
        End If
        ' E-Mail senden
        .Send
    End With

    ' Objekte aufräumen
    Set mail = Nothing
    Set outlookApp = Nothing
    Set fs = Nothing
    Set dir = Nothing
End Sub

Dieses Skript sucht im angegebenen Verzeichnis nach der neuesten Datei und fügt diese dann einer neuen E-Mail als Anhang hinzu. Die E-Mail wird anschließend automatisch versendet.


Anwendungsbeispiele aus der Praxis


  • Automatisierte Berichterstattung: Versenden der neuesten Berichtsdatei an ein Team oder einen Kunden.
  • Datensicherung: Automatisches Senden der neuesten Sicherungsdatei an einen Administrator.

Tipps


  • Stelle sicher, dass Makros in Outlook aktiviert sind, um dieses Skript ausführen zu können.
  • Überprüfe den Zugriff auf das Verzeichnis und die Berechtigungen, um Dateien zu lesen und E-Mails zu senden.

Verwandte Themenbereiche


  • VBA-Programmierung
  • Automatisierung von Outlook
  • Dateiverwaltung mit VBA

Zusammenfassung


Mit dem bereitgestellten VBA-Code kannst du die neueste Datei aus einem Verzeichnis ermitteln und diese als Anhang in einer automatisch generierten E-Mail über Outlook versenden. Dieser Prozess kann für regelmäßige Berichterstattungen oder Updates automatisiert werden, um Zeit zu sparen und die Konsistenz zu gewährleisten.

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige