Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1812to1816
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
Automatischer E-Mail-Anhang: Dateiname
18.02.2021 18:12:47
RaMa
Hallo zusammen,
trotz Suchen und ausprobieren bekomme ich mein Makro nicht zum Laufen und bitte um Hilfe.
Durch das Makro wird eine E-Mail mit Anhang generiert.
Als Anhang wird automatisch 1 Tabellenblatt aus der Excel-Mappe kopiert.
Ich möchte, dass der E-Mail-Anhang nicht den Namen des Tabellenblatts ("Eingabe") trägt.
Es wäre klasse, wenn der Anhang den Namen der Ursprungsdatei hätte.
Vielen Dank vorab.
Gruß
Raphael
Private Sub CommandButton1_Click()
Dim xOutApp As Object
Dim xOutMail As Object
Dim strBlatt As String
Dim strDatei As String
Dim strPfad As String
On Error Resume Next
Set xOutApp = CreateObject("Outlook.Application")
Set xOutMail = xOutApp.CreateItem(0)
'** Pfad für temporäre Zwischenspeicherung angeben
strPfad = "C:\Temp" 'entsprechend anpassen
Worksheets(Array("Eingabe")).Copy
Application.DisplayAlerts = False
'** Blatt temporär in vorgegebenes Verzeichnis abspeichern
ActiveWorkbook.SaveAs strPfad & "\" & ActiveSheet.Name
Application.DisplayAlerts = True
'** Pfad und Dateiname der neuen Datei zwischenspeichern
strDatei = ActiveWorkbook.FullName
With xOutMail
.GetInspector
.To = ""
.CC = ""
.BCC = ""
.Subject = ""
.Attachments.Add strDatei
.HTMLBody = "" & _
"Guten Tag, 
" & _ "anbei sende ich euch ....
" & .HTMLBody .Display 'or use .Send End With '** Erzeugte Datei schließen Workbooks(Dir(strDatei)).Close '** Erzeugte Datei wieder löschen Kill (strDatei) On Error GoTo 0 Set xOutMail = Nothing Set xOutApp = Nothing End Sub

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

Betreff
Datum
Anwender
Anzeige
AW: Automatischer E-Mail-Anhang: Dateiname
18.02.2021 18:45:43
Werner
Hallo,
die Excel-Mappe in der sich dieses Makro befindet, ist in einem anderen Ordner abgespeichert und nicht im Temp Verzeichnis?!?
Versuch statt
ActiveWorkbook.SaveAs strPfad & "\" & ActiveSheet.Name

das
ActiveWorkbook.SaveAs strPfad & "\" & ThisWorkbook.Name
Gruß Werner
AW: Automatischer E-Mail-Anhang: Dateiname
18.02.2021 19:19:07
RaMa
Hallo,
das hatte ich auch schon probiert.
Ja, die Datei ist in einem anderen Pfad abgespeichert.
Es öffnet sich nun allerdings eine E-Mail ohne Anhang und eine separate Datei mit dem Namen "Mappe1".
Danke für deine Bemühung.
Gruß
Raphael
Anzeige
AW: Automatischer E-Mail-Anhang: Dateiname
18.02.2021 19:55:49
volti
Hallo Rama,
teste mal nachfolgenden Vorschlag...
Code:

[Cc][+][-]

Option Explicit Private Sub CommandButton1_Click() Dim sPathFile As String On Error Resume Next ' ** Pfad für temporäre Zwischenspeicherung angeben sPathFile = Environ$("TEMP") & "&bsol;" & ThisWorkbook.Name Worksheets(Array("Eingabe")).Copy Application.DisplayAlerts = False ' ** Blatt temporär in vorgegebenes Verzeichnis abspeichern ActiveWorkbook.SaveCopyAs sPathFile Application.DisplayAlerts = True With CreateObject("Outlook.Application").CreateItem(0) .GetInspector .To = "" .CC = "" .BCC = "" .Subject = "" .Attachments.Add sPathFile .HTMLBody = "" & _ "Guten Tag, <br>" & _ "anbei sende ich euch ...." & .HTMLBody .Display ' or use .Send End With ' ** Erzeugte Datei wieder löschen Kill (sPathFile) End Sub

_________________________
viele Grüße aus Freigericht 😊
Karl-Heinz

Anzeige
AW: Automatischer E-Mail-Anhang: Dateiname
18.02.2021 20:48:35
RaMa
Hallo,
vielen Dank.
Leider funktioniert es auch nicht richtig.
Ich habe mir mal die E-Mail testweise gesendet, der Name des Anhangs war richtig, allerdings konnte ich den Anhang nicht öffnen (Dateiformat oder Dateierweiterung ungültig)
Parallel öffnet sich wieder eine weitere Mappe1. Bei meinem ursprünglichen Makro war das nicht der Fall, da ist das alles "im Hintergrund" abgelaufen.
Kann man im ursprünglichen Makro nicht etwas einbauen ala "safe as Dateiname"?
Grüße
Raphael
AW: Automatischer E-Mail-Anhang: Dateiname
18.02.2021 23:07:49
volti
Hallo,
teste mal das Update.
Der Passus ActiveWorkbook.SaveAs strPfad & "\" & ActiveSheet.Name speichert ohne Angabe des Fileformats im XLSX-Format, während die Dateierweiterung ggf. xlsb oder xlsm ist.
Da kracht das dann beim Öffnen.
Im nachfolgenden Makro wird jetzt eine xlsx-Datei kreiert, weil m.E. da kein Makro drin sein sollte und ansonsten auch ein Fehler generiert wird, da unter dem gleichen Dateinamen nicht gespeichert werden kann.
Code:

[Cc][+][-]

Private Sub CommandButton1_Click() Dim sPathFilename As String ' ** Pfad für temporäre Zwischenspeicherung angeben sPathFilename = ThisWorkbook.Name sPathFilename = Environ$("TEMP") & "&bsol;" _ & Left$(sPathFilename, Len(sPathFilename) - 1) & "x" Worksheets(Array("Eingabe")).Copy ' ** Blatt temporär in vorgegebenes Verzeichnis abspeichern Application.DisplayAlerts = False ActiveWorkbook.SaveAs Filename:=sPathFilename, _ FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False ActiveWindow.Close Application.DisplayAlerts = True With CreateObject("Outlook.Application").CreateItem(0) .GetInspector .To = "" .CC = "" .BCC = "" .Subject = "" .Attachments.Add sPathFilename .HTMLBody = "" & _ "Guten Tag, <br>" & _ "anbei sende ich euch ...." & .HTMLBody .Display ' or use .Send End With ' ** Erzeugte Datei wieder löschen Kill sPathFilename End Sub

_________________________
viele Grüße aus Freigericht 😊
Karl-Heinz

Anzeige
AW: Automatischer E-Mail-Anhang: Dateiname
19.02.2021 08:52:18
RaMa
Hallo Karl-Heinz,
du hast mir schlagartig den Frust genommen, funktioniert wie gewünscht :)
Super, vielen Dank an dich und Werner für die Unterstützung.
Grüße
Raphael

123 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige