Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1856to1860
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
Inhaltsverzeichnis

Datei neu speichern, als Anhang senden

Datei neu speichern, als Anhang senden
10.11.2021 21:47:48
Moritz
Guten Abend Zusammen,
folgende Schritte möchte ich mit einem Code lösen und automatisieren:
1. Abfrage ob alle Pflichtfelder ausgefüllt sind. Wenn nicht, Fehlermeldung und Code-Stopp.
2. Speichern der ausgefüllten Masterdatei unter einem neuen Dateinamen. Pfad kann weiterhin manuell gewählt werden.
3. Verschicken dieser neuen Datei als Anhang, automatisches Öffnen von Outlook inkl. vorgeschriebenen Betreff und Text.
Ich habe noch nicht viel Kenntnis von VBA und habe mir aus diversen Beiträgen folgenden Code erarbeitet, verschicke aber immer nur die Masterdatei, nicht die neue:
Sub Senden() Dim Nachricht As Object, OutApp As Object Set OutApp = CreateObject("Outlook.Application") Dim AWS As String AWS = ActiveWorkbook.FullName Set Nachricht = OutApp.CreateItem(0) Dim c As Range For Each c In Worksheets("Formular Retoure").Range("a9, a13, a15, a17, b17, d9, d11, f9") If c = "" Then Cancel = True MsgBox c.Address & " Mandatory Field" & vbCr & c.Address & " Pflichtfeld" Exit Sub c.Parent.Select c.Activate Exit For End If If c >= "" Then Cancel = False c.Parent.Select c.Activate Dim DateiName As String End If Next With Speichern Dim Name Name = Application.GetSaveAsFilename("C:\Desktop\" & "Retoureanmeldung_Kundennummer: " & Worksheets("Formular Retoure").Range("a9").Text & "_" & Worksheets("Formular Retoure").Range("d9").Text & "_" & Worksheets("Formular Retoure").Range("f9").Text & ".xlsm", fileFilter:="Microsoft Excel-Arbeitsmappe (*.xlsm), *.xlsm") If Name False Then ActiveWorkbook.SaveAs Name, FileFormat:= _ xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False End If Dim Nachricht As Object, OutApp As Object Set OutApp = CreateObject("Outlook.Application") Dim AWS As String AWS = ActiveWorkbook.FullName Set Nachricht = OutApp.CreateItem(0) End If Next With Nachricht .to = Worksheets("Formular Retoure").Range("f13").Text .Subject = "Retoureanmeldung_Kundennummer: " & Worksheets("Formular Retoure").Range("a9").Text & "_" & Worksheets("Formular Retoure").Range("d9").Text & "_" & Worksheets("Formular Retoure").Range("f9").Text .attachments.Add AWS .Body = "Hallo Zusammen," & vbCr _ & vbCr _ & "anbei sende ich eine Retourenanmeldung inkl. Bitte um Versand des Lieferscheins und Paketaufklebers an folgende E-Mail Adresse: " & Worksheets("Formular Retoure").Range("a15").Text & vbCr _ & vbCr _ & "Danke und viele Grüße" & vbCr _ & vbCr _ .Display End With End Sub >
Ggf. hat hier jemand ja eine Idee wie ich diesen Code ändern oder sogar kürzen kann und trotzdem an mein Ziel komme.
Vielen Dank vorab!
Grüße
Moritz

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Datei neu speichern, als Anhang senden
10.11.2021 23:22:57
ralf_b
versuchs mal damit, ungetestet.

Sub Senden()
Dim Nachricht As Object, OutApp As Object
'Dim AWS    As String
Dim c      As Range
Dim Name
Dim DateiName As String
Dim sLeer  As String
Dim sh  As Worksheet
' AWS = ActiveWorkbook.FullName
Set OutApp = CreateObject("Outlook.Application")
Set Nachricht = OutApp.CreateItem(0)
Set sh = Worksheets("Formular Retoure")
For Each c In sh.Range("a9, a13, a15, a17, b17, d9, d11, f9")
If IsEmpty(c) Then sLeer = sLeer & c.Address(0, 0) & vbCr
Next
If sLeer  "" Then
MsgBox "Mandatory Field/ Pflichtfeld" & vbCrLf & sLeer
GoTo raus
End If
With Worksheets("Formular Retoure")
Name = Application.GetSaveAsFilename("C:\Desktop\" & _
"Retoureanmeldung_Kundennummer: " & _
.Range("a9").Text & _
"_" & .Range("d9").Text & _
"_" & .Range("f9").Text & _
".xlsm", _
fileFilter:="Microsoft Excel-Arbeitsmappe (*.xlsm), *.xlsm")
If Name  False Then
ActiveWorkbook.SaveAs Name, FileFormat:= _
xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
End If
End With
With Nachricht
.to = sh.Range("f13").Text
.Subject = "Retoureanmeldung_Kundennummer: " & sh.Range("a9").Text _
& "_" & _
sh.Range("d9").Text _
& "_" & _
sh.Range("f9").Text
.attachments.Add Name
.Body = "Hallo Zusammen," _
& vbCr _
& vbCr _
& "anbei sende ich eine Retourenanmeldung inkl. Bitte um Versand des Lieferscheins und Paketaufklebers an folgende E-Mail Adresse: " & sh.Range("a15").Text _
& vbCr _
& vbCr _
& "Danke und viele Grüße" _
& vbCr _
& vbCr _
.Display
End With
raus:
Set sh = Nothing: Set Nachricht = Nothing:    Set OutApp = Nothing
End Sub

Anzeige
AW: Datei neu speichern, als Anhang senden
11.11.2021 08:18:20
Moritz
Danke für die Anwort!
Der Code läuft bis:

.attachments.Add Name
Dann kommt eine Laufzeit-Fehlermeldung, weil die neue Datei nicht geöffnet werden kann, da bereits offen.
AW: Datei neu speichern, als Anhang senden
11.11.2021 17:55:38
ralf_b
nun , jetzt wo ich diese Info habe, macht das auch SInn.
Du speicherst deine Datei zwar unter einem anderen Namen, aber es ist immer noch die aktuelle geöffnete Datei in welcher auch der Code läuft.
Somit wäre eine Möglichkeit wieder AWS als Name zu nutzen oder eine Kopie der Datei zu speichern. Und den Namen der Kopie (evtl ohne Makros) zu nutzen.
Wobei ich mich frage warum du eine Datei mit Makros verschickst. Soll das so sein?
Anzeige
AW: Datei neu speichern, als Anhang senden
12.11.2021 11:11:50
Moritz
Die versendete Datei muss nicht zwangsläufig mit Makro verschickt werden, es ginge auch eine .xlsx-Version.
Herausforderung ist, dass diverse Benutzer auf die Masterdatei zugreifen und diese verwenden sollen. Der jetztige Code erlaubt auch, dass der jeweilige Benutzer den Speicherort anpassen kann. Somit habe ich keinen festen Pfad von dem ich die gespeicherte neue Datei per Code abrufen kann.

301 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige