Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1572to1576
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

per Button in Ordner speichern

per Button in Ordner speichern
11.08.2017 13:45:50
Marco
Halli hallo zusammen.
Ich habe einem Button mit dem ich einen festgelegten Bereich als PDF abspeichere. Der Dateiname enthält immer das aktuelle Datum. Jetzt würde ich gerne wegen zwecks der Übersicht die PDF Dateien in einem Ordner des jeweiligen Monats automatisch abspeichern. Also ich klick auf den Button und dann schaut VBA nach welchen Monat haben wir eigentlich und in Abhängigkeit vom Monat soll dann die PDF Datei in z.B. im Ordner "August 2017" gespeichert werden. Wenn der Ordner noch nicht vorhanden ist soll er automatisch erstellt und dann die PDF Datei darin gespeichert werden.
Im Internet habe ich jetzt nichts für meinen Fall gefunden in dem der Monat und ein Ordner abgefragt wird. Daher meine frage an euch weiß jemand wie das geht?
Mein Code sieht aktuell so aus:
Private Sub Create_PDF_Data_Click()
ChDir "C:\Users\Desktop"       'Speicherort angeben
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
("test - ") & ("KW ") & Application.WorksheetFunction.WeekNum(Date, 21) & Format(Date, " -  _
dddd, yyyy/mm.dd") & ".pdf", Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False        ' _
Dateiname definieren
End Sub

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: per Button in Ordner speichern
11.08.2017 14:03:51
Michael
Hallo!
Der Spur nach so, ist aber ungetestet, weil ich gerade am Verlassen meiner Maschine bin:
Sub a()
Const PFAD$ = "C:\Users\Desktop\" 'anpassen
Const PRE$ = "Test - KW " 'anpassen
Const SUF$ = ".pdf" 'anpassen
Dim Wb As Workbook: Set Wb = ThisWorkbook
Dim Ws As Worksheet: Set Ws = Wb.ActiveSheet
Dim Mon, Verz$, DName$
Mon = Array("Jänner", "Februar", "März", "April", "Mai", "Juni", "Juli", _
"August", "September", "Oktober", "November", "Dezember")
DName = Application.WorksheetFunction.WeekNum(Date, 21) & _
Format(Date, " - dddd, yyyy/mm.dd")
'Verzeichnis-Name aus aktuellem Monat erstellen
Verz = Mon(Month(Date) - 1)
'Verzeichnis anlegen, wenn noch nicht vorhanden
If Dir(PFAD & Verz, vbDirectory) = "" Then MkDir PFAD & Verz
Ws.ExportAsFixedFormat Type:=xlTypePDF, Filename:=PFAD & Verz & "\" & PRE & DName & SUF, _
Quality:=xlQualityStandard, IncludeDocProperties:=True,  _
IgnorePrintAreas:=False, _
OpenAfterPublish:=False
MsgBox "PDF-Export abgeschlossen!"
Set Wb = Nothing: Set Ws = Nothing: Erase Mon
End Sub
LG
Michael
Anzeige
AW: hihi es funktioniert vielen dank =)
11.08.2017 15:20:14
Marco
dir ein schönes wochenende
AW: Monat und Jahr?
11.08.2017 15:43:51
Marco
Michael, wenn du noch da bist oder irgendjemand anders da draußen. Der Code läuft super, wie gebe ich automatisch das richtige Jahr an und frage es ab ob es schon vorhanden ist? Die PDF Dateien sollten im Ordner "2017 August" abgespeichert werden wenn dieser nicht vorhanden ist soll er erstellt werden. Wenn wir aber schon August 2018 haben sollte dann der Ordner "2018 August" erstellt werden.
Ich dachte mir das ich das alles einfach so erweitern kann, aber leider geht es nicht.
Mein Code:
Private Sub Create_PDF_Data_Click()
Const PFAD$ = "C:\Users\Desktop\"
Const PRE$ = "test - KW "
Const SUF$ = ".pdf"
Dim Wb As Workbook: Set Wb = ThisWorkbook
Dim Ws As Worksheet: Set Ws = Wb.ActiveSheet
Dim Mon, Year, Verz$, DName$
Mon = Array("Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", _
"August", "September", "Oktober", "November", "Dezember")
Year = Array("2015", "2016", "2017", "2018", "2019", "2020")
DName = Application.WorksheetFunction.WeekNum(Date, 21) & _
Format(Date, " - dddd, yyyy/mm.dd")
'Verzeichnis-Name aus aktuellem Monat erstellen
Verz = Year & Mon(Month(Date) - 1)
'Verzeichnis anlegen, wenn noch nicht vorhanden
If Dir(PFAD & Verz, vbDirectory) = "" Then MkDir PFAD & Verz
Ws.ExportAsFixedFormat Type:=xlTypePDF, Filename:=PFAD & Verz & "\" & PRE & DName & SUF, _
Quality:=xlQualityStandard, IncludeDocProperties:=True, _
IgnorePrintAreas:=False, OpenAfterPublish:=False
Set Wb = Nothing: Set Ws = Nothing: Erase Mon
End Sub

Kann da bitte jemand mal drüber schauen
Anzeige
AW: Monat und Jahr?
12.08.2017 23:50:46
Michael
Hallo!
Nimm das raus, das ergibt keinen Sinn:
 Year = Array("2015", "2016", "2017", "2018", "2019", "2020")
Und statt dieser Zeile
Verz = Year & Mon(Month(Date) - 1)
schreibst Du
Verz = Year(Date) & " " & Mon(Month(Date) - 1)
...das setzt die aktuelle Jahreszahl vor den Monatsnamen (inkl. Leerzeichen).
Aus den Deklarationen kannst Du Year dann natürlich auch gleich rausnehmen.
LG
Michael
AW: Monat und Jahr?
17.08.2017 07:46:19
harti
Hallo Michael,
erst einmal ein riesigen Lob...das Makro ist super und das kann ich auch für ein Projekt verwenden welches ich gerade vorbereiten muss.
Ich habe eine Frage. Wie muss das Makro abgeändert werden, damit das PDF bei erneuter Ausführung nicht überschrieben sondern ein weiteres im Ordner abgespeichert wird. Dies wäre sehr hilfreich wenn z.B. Änderungen in der Excel-Datei vorgenommen werden und diese aber auch die Ursprungsversion vorhanden sein sollen.
Danke...
harti
Anzeige
Wenn die Datei nicht überschrieben werden soll...
17.08.2017 10:14:22
Michael
Harti,
...muss zunächst geprüft werden, ob die Datei schon existiert, und wenn ja, der Speichername (Dateiname) entsprechend ergänzt werden (zB mit einer laufenden Nummer). Dafür gibt's verschiedene Strategien und Wege, ich hab's jetzt mal in den Code eingepflegt, den ich oben als erstes gepostet habe, inkl. Kommentar:
Sub b()
Const PFAD$ = "C:\Users\Desktop\" 'anpassen
Const PRE$ = "Test - KW " 'anpassen
Const SUF$ = ".pdf" 'anpassen
Dim Wb As Workbook: Set Wb = ThisWorkbook
Dim Ws As Worksheet: Set Ws = Wb.ActiveSheet
Dim Mon, Verz$, DName$, i&
Mon = Array("Jänner", "Februar", "März", "April", "Mai", "Juni", "Juli", _
"August", "September", "Oktober", "November", "Dezember")
DName = Application.WorksheetFunction.WeekNum(Date, 21) & _
Format(Date, " - dddd, yyyy/mm.dd")
'Verzeichnis-Name aus aktuellem Jahr und Monatsnamen erstellen
Verz = Year(Date) & " " & Mon(Month(Date) - 1)
'Verzeichnis anlegen, wenn noch nicht vorhanden
If Dir(PFAD & Verz, vbDirectory) = "" Then MkDir PFAD & Verz
'Prüfen ob eine Datei mit diesem Namen schon existiert
'...wenn ja wird solange mit _# ergänzt (hochgezählt) bis der
'Dateiname noch nicht existiert, und mit dem letzten gespeichert
Do Until Dir(PFAD & Verz & "\" & PRE & DName & SUF) = ""
i = i + 1: DName = DName & "_" & i
Loop
'Blatt entsprechend speichern
Ws.ExportAsFixedFormat Type:=xlTypePDF, _
Filename:=PFAD & Verz & "\" & PRE & DName & SUF, _
Quality:=xlQualityStandard, IncludeDocProperties:=True, _
IgnorePrintAreas:=False, OpenAfterPublish:=False
MsgBox "PDF-Export abgeschlossen!"
Set Wb = Nothing: Set Ws = Nothing: Erase Mon
End Sub
LG
Michael
Anzeige
Wenn die Datei nicht überschrieben werden soll...
17.08.2017 12:03:20
harti
Danke Michael,
genau was ich benötigt habe.
Das wird mir die Arbeit sehr erleichtern.
Vielen Dank
harti
Aber bitte gerne, Danke für die Rückmeldung, owT
17.08.2017 12:51:24
Michael

301 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige