ich bin noch echt unerfahren, was VBA und Makros angeht, daher scheitere ich wahrscheinlich an Kleinigkeiten.
Ich mache meine Stundenzettel digital und möchte diese gerne beim klick auf "speichern" mit einigen Vorgaben aus dem Arbeitsblatt in enem bestimmten Dateinamen Format ablegen und zusätzlich für die Buchhaltung in dem gleichen Dateinamenformat, allerdings als PDF zur Verfügung stellen.
Bisher habe ich alles nur per Try and Error mit Copy und paste zusammenge"schustert"
Das Makro auf dem Textfeld "speichern" sieht folgendermaßen aus:
Sub Speichern_unter()
Dim Datei As String
Dim Verzeichnis As String
Dim SaveDummy As Variant
Verzeichnis = "C:\Users\arohrmann\Documents\1. Stundenzettel\" 'Verzeichnis-Vorschlag
Datei = Range("G2") & "" & Range("H2") & " - " & Range("D11") & " - " & Range("D7") & ", " & Range("D9") & ".xlsm" 'Datei-Vorschlag
SaveDummy = SpeichernUnter(Verzeichnis & Datei)
If SaveDummy > False Then ActiveWorkbook.SaveAs SaveDummy, FileFormat:=51 'Es wurde im Dialog auf Speichern gedrückt
End Sub
Function SpeichernUnter(VorgabeName As String) As Variant
SpeichernUnter = Application.GetSaveAsFilename(InitialFileName:=VorgabeName, _
Filefilter:="Excel Dateien (*.xlsx),*.xlsx", _
FilterIndex:=1, Title:="Speichern unter...", ButtonText:="speichern")
End Function
Das Makro hinter dem Textfeld "Drucken" sieht so aus:
Sub DruckenInPDF()
Call PDF_Speichern
End Sub
Function PDF_Speichern() As Boolean ' Kopiert Blätter in eine neue PDF-Datei für den E-Mail-Versand
Dim DiesesBlatt As String, DieseDatei As String, PfadName As String
Dim SpeichernAls As String
Application.ScreenUpdating = False
' Dateinamen zum Speichern abrufen
DiesesBlatt = ActiveSheet.Name
DieseDatei = ActiveWorkbook.Name
PfadName = ActiveWorkbook.Path
SpeichernAls = PfadName & "\" & DiesesBlatt & ".pdf"
'Druckqualität einstellen
On Error Resume Next
ActiveSheet.PageSetup.PrintQuality = 600
Err.Clear
On Error GoTo 0
' Benutzer anweisen, wie er senden soll
On Error GoTo RefLibFehler
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=SpeichernAls, Quality:=xlQualityStandard, IncludeDocProperties:=False, IgnorePrintAreas:=False, OpenAfterPublish:=True
On Error GoTo 0
NurSpeichern:
MsgBox "Eine Kopie dieses Blattes wurde erfolgreich als .pdf-Datei gespeichert: " & vbCrLf & vbCrLf & SpeichernAls & _
"Überprüfen Sie das .pdf-Dokument. Wenn das Dokument NICHT gut aussieht, passen Sie Ihre Druckparameter an und versuchen Sie es erneut."
PDF_Speichern = True
GoTo EndMacro
RefLibFehler:
MsgBox "Kann nicht als PDF gespeichert werden. Referenzbibliothek nicht gefunden."
PDF_Speichern = False
EndMacro:
End Function
Beim erstellen der PDF möchte ich aber gerne das gleiche Format für den Dateinamen aus der Tabelle nutzen, wie beim normalen speichern auch.
Beim Makro "speichern" bekomme ich Fehler 400 und die Datei wird nicht gespeichert, er meckert über das Makro, das ja als xlsm gespeichert werden soll, aber die Vorgabe der Dateieerweiterung ist doch integriert?
Beim Makro "Drucken" haut er einfach die PDF mit Standard Dateinamen raus, das speichern als solches funktioniert, aber wo baue ich die Dateinamen vorgabe ein? (und der blöde Hinweis, dass es gespeichert wurde nervt auch etwas)
P.S. Die code > Tags scheinen irgendwie nicht zu funktionieren, ich markiere den Code, klicke auf den Button über dem Beitragsfeld, aber es passiert nichts. .
Vielen Dank für eure Hilfe und Grüße aus Flensburg, Alex