Registriert seit: 24.01.2020
Version(en): 365
Hallo liebe Forengemeinde, ich habe folgende Situation: Jede Woche muss ich einzelne Dokumente per Mail verschicken und diese zusätzlich auf einem Netzlaufwerk speichern. Für den wöchentlichen Mailversand habe ich mir ein eigenes Dokument erstellt, indem ich per Knopfdruck alle Dokumente auf den Weg bringe. Für das Abspeichern bin ich noch etwas ratlos. Code: Sub SaveToServer() Dim SaveName As String SaveName = ActiveSheet.Range("B25").Text Application.DisplayAlerts = False ActiveWorkbook.SaveAs Filename:="X:\2021_DE\Reporting\...\" & _ SaveName & ".xlsx" End Sub
Diesen Code hatte ich bei meiner Recherche entdeckt und der speichert leider nicht in dem Format ab...Laufzeitfehler 1004. XLSX mag er nicht mit Makro...aber ich kann auch nicht auswählen "Trotzdem speichern" oder ähnliches. Meine Wunschlösung wäre ein Code in einem separaten Dokument, dass die aktuellste Reporting-Datei unter neuem Namen speichert (das ist immer Reporting Name mit Datum als Jahr Monat Tag) und zwar direkt auf meinem PC und im Netzlaufwerk. Wie kann ich das erreichen? Wer die Muße hat seinen Code zu kommentieren, dafür bin ich immer dankbar, weil ich gerne dazulerne :) zumindest grob verstehen möchte ich was es braucht! Grüße Phiant
Registriert seit: 06.09.2016
Version(en): 2016
Hallo Phiant, willst Du mit Makros speichern, probier mal: Code: ActiveWorkbook.SaveAs Filename:="X:\2021_DE\Reporting\...\" & SaveName & ".xlsm"
Willst Du nur die Dateien ohne Makros speichern, probier mal:Code: ActiveWorkbook.SaveAs "X:\2021_DE\Reporting\...\" & SaveName & ".xlsx", FileFormat:=xlOpenXMLWorkbook
Gruß,Lutz
Registriert seit: 24.01.2020
Version(en): 365
Hallo Lutz, ich möchte ohne Makros speichern, deswegen als .xlsx! Dein 2. Code funktioniert einwandfrei, vielen Dank schonmal dafür  Wenn ich die Datei im neuen Format abspeichern möchte, kommt die Aufforderung zu entscheiden, ob ich das wirklich will oder nicht. Mit welchem Befehl kann ich das automatisch bestätigen, dass ohne Makros abgespeichert werden soll? Nach dem erfolgreichen abspeichern unter neuem Namen auf dem Server, möchte ich das sich das Dokument direkt selber schließt. Was muss ich dazu ergänzen? Wunschszenario: Ich löse mein Makro aus, das speichert mir die Datei ohne zusätzliche Bestätigung & ohne Makros auf den Server, dann wird das Dokument geschlossen. Ergänzende Frage: Kann ich über ein Makro in separatem Dokument mein "Reporting" ansteuern und eine Kopie davon, mit Datums-korrektem Namen, auf den Server speichern lassen? Danke für die Mühe  Gruß Phiant
Registriert seit: 06.09.2016
Version(en): 2016
Hallo Phiant, speichern und schließen ohne Nachfrage: Code: Application.DisplayAlerts = False Application.EnableEvents = False ActiveWorkbook.SaveAs "X:\2021_DE\Reporting\...\" & SaveName & ".xlsx", FileFormat:=xlOpenXMLWorkbook ActiveWorkbook.Close Application.EnableEvents = True Application.DisplayAlerts = True
Zuerst die Fehlermeldung ausschalten, dann evtl. irgendwelche nachgelagerten Events ausschalten, speichern, schließen Events wieder einschalten, Fehlermeldungen wieder einschalten. Der Code in der Form ist allerdings nicht wirklich brauchbar, da spätestens mit der Zeile ActiveWorkbook.Close der Code weg ist und die letzten Zeilen werden nicht ausgeführt werden. Also in irgendeiner Weise brauchst Du den Code außerhalb des Reportings. Ich arbeite üblicherweise mit einer Datei, die den Code und Hilfsdaten enthält. Die Reportingdatei ist immer eine .xlsx-Datei. Damit kann ich das Reporting öffnen, speichern, schließen etc. ohne dass ich Code-Probleme bekomme. Das ist wahrscheinlich, was du mit der letzten Frage meinst, oder? Am Besten Du postest mal ne Beispieldatei und den Code. Gruß, Lutz
Registriert seit: 24.01.2020
Version(en): 365
Zitat:Ich arbeite üblicherweise mit einer Datei, die den Code und Hilfsdaten enthält. Die Reportingdatei ist immer eine .xlsx-Datei. Damit kann ich das Reporting öffnen, speichern, schließen etc. ohne dass ich Code-Probleme bekomme.
Das ist wahrscheinlich, was du mit der letzten Frage meinst, oder? Am Besten Du postest mal ne Beispieldatei und den Code. Genau DAS möchte ich am liebsten auch so  ! Gar keinen Code ins Reporting und dafür nur eine eigene Datei verwenden. Ich habe mal angehängt wie das aussehen könnte, aber vielleicht ist dein Design da schon leichter zum adaptieren?!
Test Server und Mail.xlsx (Größe: 19,2 KB / Downloads: 1)
Was das Thema "Mailversand" angeht, habe ich bereits den Code in einer anderen Datei und würde den entsprechend übertragen. Deswegen sind in meiner Beispieldatei keine Codes enthalten und auch nur für den oberen Teil (Wöchentliche Serversicherung) nötig.
Registriert seit: 24.01.2020
Version(en): 365
Hallo Lutz, mit deinen Infos hab ich mir den nötigen Code selbst zusammensuchen können :) Das kann man wahrscheinlich schöner/aufgeräumter programmieren, aber es funktioniert wie es soll! Vielen Dank nochmal für deine Unterstützung. Anbei der "fertige" Code: E4 enthält das Datum Rückwärts A9 & A10 enthalten den aktuellen Datei-Namen unter dem auf den Server gesichert wird. Ich habe das Speichern noch mit dem Schließen in ein eigenes Makro verknüpft, welches über einen Button ausgelöst wird (das kann man wahrscheinlich leichter in ein Makro schreiben...) Code: Sub Reporting_öffnen() Workbooks.Open "C:\Users\...Reporting_2021_PhiAnt.xlsx" End Sub Sub Reporting_Ablegen() Dim SaveName2 As String SaveName2 = ActiveSheet.Range("A9").Text Workbooks("Reporting_2021_PhiAnt.xlsx").SaveAs "X:\2021_DE\Reporting\Ant\" & SaveName2 & ".xlsx" End Sub Sub Reporting_schliessen() Dim Zusatz As String Zusatz = ActiveSheet.Range("E4").Text Workbooks("Reporting_2021_PhiAnt " & Zusatz & ".xlsx").Close savechanges:=False End Sub Sub Reporting_ablegen_schliessen() Reporting_Ablegen Reporting_schliessen End Sub
Sub Routenplanung_öffnen() Workbooks.Open "C:\Users\...\Routenplanung_2021_PhiAnt.xlsx" End Sub Sub Routenplanung_Ablegen() Dim SaveName3 As String SaveName3 = "Routenplanung_2021_PhiAnt " & ActiveSheet.Range("E4").Text Workbooks("Routenplanung_2021_PhiAnt.xlsx").SaveAs "X:\2021_DE\Routenplanung\Ant\" & SaveName3 & ".xlsx" End Sub Sub Routenplanung_schliessen() Dim Zusatz As String Zusatz = ActiveSheet.Range("E4").Text Workbooks("Routenplanung_2021_PhiAnt " & Zusatz & ".xlsx").Close savechanges:=False End Sub Sub Routenplanung_ablegen_schliessen() Routenplanung_Ablegen Routenplanung_schliessen End Sub
Sub Online_Übersicht_öffnen() Workbooks.Open "C:\Users\...\Übersicht Online gesamt.xlsx" End Sub Sub Online_Übersicht_Ablegen() Dim SaveName As String SaveName = ActiveSheet.Range("A10").Text Workbooks("Übersicht Online gesamt.xlsx").SaveAs "X:\2021_DE\Webinare\Übersicht Online\" & SaveName & ".xlsx" End Sub Sub Online_Übersicht_schliessen() Dim Zusatz As String Zusatz = ActiveSheet.Range("E4").Text Workbooks("Übersicht Online gesamt " & Zusatz & ".xlsx").Close savechanges:=False End Sub Sub Online_Übersicht_ablegen_schliessen() Online_Übersicht_Ablegen Online_Übersicht_schliessen End Sub
Für den Mailversand habe ich meinen bisherigen Code nutzen können und es funktioniert einwandfrei. Gruß, Phiant
Registriert seit: 06.09.2016
Version(en): 2016
Hallo Phiant, nachdem Du für alles eigene Knöpfchen hast, geht's für mich nicht besser. Schaut gut aus. Bin aber auch kein Profi... Ungeschickt finde ich die Sache mit dem Datum. Schreibe doch das Datum ganz normal in Zelle E4 und mache mit Code: DatumSpeicher = Format(Cells(4, 5), "YYYYMMDD") oder DatumSpeicher = Format(Cells(4, 5), "YYYY-MM-DD")
das Speicherdatum draus. Gruß, Lutz
Registriert seit: 24.01.2020
Version(en): 365
Ich habe auch einen "All in One" Knopf ausprobiert, der erst den öffnen-Code, dann den ablegen-Code, den schließen-Code und zuletzt den Mailversand-Code auslöst. Dabei kam immer eine Fehlermeldung, dass für _workbooks save as nicht ausgeführt werden konnte  Ist bei mir jetzt auch nicht zwingend anders nötig. Das mit dem Datum probiere ich noch aus, schaut auch irgendwie unnötig aus, das Datum in 2 Formatierungen dastehen zu haben. Gruß, Phiant
|