E-Mail Anhang: Dateinamen suchen und einfügen

Liebe/-r Experte/-in,

ich habe da ein kleines Problem mit der Programmierung. Leider konnte ich im Netz nichts dazu finden.

Ich möchte eine von mir generierte PDF-Datei als Anhang einer Mail verschicken. Bei meiner bisherigen Programmierung ist das auch kein Problem, da die Datei nicht verschoben wird.
In Zukunft soll die Datei allerdings beim Speichern verschoben werden, wobei sich natürlich der Dateipfad ändert.

Wie kann ich jetzt das Problem lösen??

Danke schon mal vorab!!

Hier mein Auszug:

Dim datnam As String
Dim actWB As String
Dim Pfad As String
Dim objOutlook As Object
Dim objMail As Object
Pfad = „C:\Users\SUNS-Fölsch\Desktop“ 'oder wo auch immer
actWB = ActiveWorkbook.Name

'Arbeitsblatt als neues Blatt speichern und dieses als .pdf drucken
'dann hat das .pdf den Namen des Sheets

datnam = ActiveSheet.Name
Sheets(datnam).Copy

Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:=Pfad & datnam & „.xls“
Application.DisplayAlerts = True

Workbooks(datnam & „.xls“).Activate

ActiveSheet.UsedRange.Select
Selection.PrintOut ActivePrinter:=„FreePDF XP“, Copies:=1, Collate:=True, Preview:=False
Application.Wait (Now + TimeValue(„00:00:02“)) 'Warten auf Bearbeitung
SendKeys „{Enter}“
SendKeys „{NUMLOCK}“

Workbooks(actWB).Activate
Workbooks(datnam & „.xls“).Close SaveChanges:=True

'Spuren beseitigen - löscht das erstellte Arbeitsblatt
Kill Pfad & datnam & „.xls“

Application.Wait (Now + TimeValue(„00:00:02“))

'generiertes pdf als eMail per Anhang versenden:

Set objOutlook = CreateObject(„Outlook.Application“)
Set objMail = objOutlook.CreateItem(0)

With objMail
'Adressen:
.To = „“
'.CC = (optional
'.BCC = (optional)

'Nachricht:
.Subject = „Reklamation zu LS“ & Chr(32) & Worksheets(1).Range(„E4“)
.Body = „Moin,“ & vbCrLf & vbCrLf & „anbei die Fehlermeldung zu LS“ & Chr(32) & Worksheets(1).Range(„E4“) & Chr(32) & „bearbeitet zurück.“
'Anhang:
.Attachments.Add Pfad & datnam & „.pdf“

'Abschicken: (optional)
'.ReadReceiptRequested = False [keine Lesebestätigung]
'.Send
End With

'nur Anzeigen
objMail.Display
Set objMail = Nothing
Set objOutlook = Nothing

Hallo Argon_Pinkicker,
leider habe ich weder deinen PDF Printer noch Outlook in Verwendung und kann so dein Makro nicht schnell 1:1 durchchecken.

Darum wäre es hilfreich, wenn ich deine Frage für mich verständlich lesen könnte.
Was hast du bereits versucht, in welchem Teil (Fileerstellung, safe, print mit speichern unter, speichern des neuen Pfades, löschen des xls, versenden des PDF) hakt es, welche Fehlermeldungen hast du bekommen, ist der gepostete Code der bisherige(funktionierende) oder eine Mischung (bisherige oder)?

Darum kann ich bis zu einer näheren Beschreibung nur Mutmaßen. Nicht, dass ich mich 3 Stunden hinsetze und dann war die Frage nur die wie du das PDF (mit fixem oder gewähltem Pfad) auf Platz x speichern kannst und den Pfad so weiterverwenden kannst, dass du in der Lage bist die Datei zu senden und anschließend zu löschen.

Viele liebe Grüße
ert

Liebe/-r Experte/-in,

ich habe da ein kleines Problem mit der Programmierung. Leider
konnte ich im Netz nichts dazu finden.

Ich möchte eine von mir generierte PDF-Datei als Anhang einer
Mail verschicken. Bei meiner bisherigen Programmierung ist das
auch kein Problem, da die Datei nicht verschoben wird.
In Zukunft soll die Datei allerdings beim Speichern verschoben
werden, wobei sich natürlich der Dateipfad ändert.

Wie kann ich jetzt das Problem lösen??

Danke schon mal vorab!!

Hallo ert,

danke für deine Antwort.

leider habe ich weder deinen PDF Printer noch Outlook in
Verwendung und kann so dein Makro nicht schnell 1:1
durchchecken.

Nicht shlimm.

Darum kann ich bis zu einer näheren Beschreibung nur Mutmaßen.
Nicht, dass ich mich 3 Stunden hinsetze und dann war die Frage
nur die wie du das PDF (mit fixem oder gewähltem Pfad) auf
Platz x speichern kannst und den Pfad so weiterverwenden
kannst, dass du in der Lage bist die Datei zu senden und
anschließend zu löschen.

Natürlich sollst dich nicht 3 Std. für mich hinsetzen.

Ich versuche es dir zu erklären.
Derzeit passiert folgendes:

  • Excel-Blatt wird unter anderen Namen gespeichert.
  • Neue Datei wird über FreePDF gedruckt und gespeichert im Pfad C:…\Desktop
  • Excel-Datei wird wieder gelöscht.
  • E-Mail wird generiert und Anhang (PDF-Datei im selben Pfad gespeichert) wird vom abgelegten Pfad (siehe oben) geholt.

Mein Problem:
Die generierte PDF-Datei soll nicht unter Pfad C:…\Desktop abgespeichert werden, sondern je nach Fall woanders.
=> Folge: E-Mail wird generiert, aber findet die Datei nicht mehr, da angegebener Pfad C:…\Desktop.

Mein gewünschter Ablauf:

  • Excel-Blatt wird unter anderen Namen gespeichert.
  • Neue Datei wird über FreePDF gedruckt und gespeichert, wo sie hin soll
  • Excel-Datei wird wieder gelöscht.
  • E-Mail wird generiert und Anhang (PDF-Datei im gewünschten Pfad gespeichert) wird gesucht und eingefügt.

Ich hoffe, es dir so verständlicher zu machen.

Hallo,

so verstehe ich deine Frage besser.
Du solltest nur folgenden Anpassungen vornehmen müssen.
Der erste Teil ist der neue Speichervorgang und der 2. betrifft das löschen der Datei da ja der Pfad udn Datei in der neuen Varianle stehen.

Sollte etwasunklar sein einfach nochmal melden

lg
ert

Hier ist deine Lösung:
'File wird gespeichert
'Initialbefüllung des Dateinamens mit deiner Variablen Datnam .xls
'Es können nur xls gespeichert werden (nicht nötig)
'Pfad + Dateiname + Endung xls ==>Dateipfad
Dateipfad = Application.GetSaveAsFilename(InitialFileName:=datnam & „.xls“, fileFilter:=„Excel-Arbeitsmappe, *.xls“)
If Dateipfad = False Then Exit Sub
ActiveWorkbook.SaveAs Filename:=Dateipfad
MsgBox Dateipfad

'statt
'Kill Pfad & datnam & „.xls“
Kill Dateipfad