PDA

Vollständige Version anzeigen : PDF-Druck mit automatischer Vergabe des Namens


SvenW00
20.08.2017, 09:11
Hallo alle zusammen,
ich hab folgendes Problem: Ich habe in einer Arbeitsmappe eine ganze reihe von Arbeitsblätter die ich mittels VBA ausdrucken lassen will. Da die einzelnen Dokumente in verschiedenen Formaten und auf Verschiedenen Drucker gedruckt werden sollten (der Drucker ist nicht immer vorher bekannt), soll der Ausdruck via PDF erfolgen. Da ich nicht sicherstellen kann, dass auf jedem Rechner mit dem die Arbeitsmappe verwendet wird z.B. den PDFCreater installiert ist, nutze ich zum erstellen der PDF Datei den Windows eigenen PDF Drucker.
Weiterhin kann der Nutzer über eine UserForm einstellen welche Arbeitsblätter mit welchen Druckbereich gedruckt werden sollen. Soweit so gut bis her her klappt alles ohne Probleme aber leider muss der Nutzer den Namen für die Dateien jedes mal selber eingeben, was recht nervig und aufwendig ist. Besteht die Möglichkeit, dass VBA den Namen vordefiniert? Nachfolgend habe ich mal einen Ausschnitt von meinen Skript angefügt:


'Druck aller Monate UND Anlagen
If UF_menue.CB_monat_alle.Value = True And UF_menue.CB_anlagen_alle.Value = True Then

Worksheets("Januar").PageSetup.PrintArea = "A1:I75"
Worksheets("Februar").PageSetup.PrintArea = "A1:I75"
Worksheets("März").PageSetup.PrintArea = "A1:I75"
Worksheets("April").PageSetup.PrintArea = "A1:I75"
Worksheets("Mai").PageSetup.PrintArea = "A1:I75"
Worksheets("Juni").PageSetup.PrintArea = "A1:I75"
Worksheets("Juli").PageSetup.PrintArea = "A1:I75"
Worksheets("August").PageSetup.PrintArea = "A1:I75"
Worksheets("September").PageSetup.PrintArea = "A1:I75"
Worksheets("Oktober").PageSetup.PrintArea = "A1:I75"
Worksheets("November").PageSetup.PrintArea = "A1:I75"
Worksheets("Dezember").PageSetup.PrintArea = "A1:I75"

With Worksheets("Anlage - Mitarbeiter").PageSetup
.PrintArea = "A1:H39,A41:H79,A81:H119,A121:H159,A161:H199,A201:H239,A241:H279,A281:H319,A321:H 359,A361:H399,A401:H439,A441:H479"
End With


ThisWorkbook.Sheets(Array("Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember")).PrintOut ActivePrinter:="Microsoft Print to PDF"
Worksheets("Anlage - Mitarbeiter").PrintOut ActivePrinter:="Microsoft Print to PDF"


End If
'
'Einzelauswahl
If UF_menue.CB_monat_alle.Value = False And UF_menue.CB_anlagen_alle.Value = False Then
If UF_menue.CB_monat_alle.Value = False Then
If UF_menue.CB_anlagen_alle.Value = False Then

'###########Januar###########
If UF_menue.CB_jan.Value = True And UF_menue.CB_anlagen_jan.Value = True Then
Worksheets("Januar").PageSetup.PrintArea = "A1:I75"
Worksheets("Anlage - Mitarbeiter").PageSetup.PrintArea = "A1:H39"
Worksheets("Januar").PrintOut
Worksheets("Anlage - Mitarbeiter").PrintOut
ElseIf UF_menue.CB_jan.Value = True And UF_menue.CB_anlagen_jan.Value = False Then
Worksheets("Januar").PageSetup.PrintArea = "A1:I75"
Worksheets("Januar").PrintOut
ElseIf UF_menue.CB_jan.Value = False And UF_menue.CB_anlagen_jan.Value = True Then
Worksheets("Anlage - Mitarbeiter").PageSetup.PrintArea = "A1:H39"
Worksheets("Anlage - Mitarbeiter").PrintOut
End If
'###########Februar###########
If UF_menue.CB_feb.Value = True And UF_menue.CB_anlagen_feb.Value = True Then
Worksheets("Februar").PageSetup.PrintArea = "A1:I75"
Worksheets("Anlage - Mitarbeiter").PageSetup.PrintArea = "A41:H79"
Worksheets("Februar").PrintOut
Worksheets("Anlage - Mitarbeiter").PrintOut
ElseIf UF_menue.CB_feb.Value = True And UF_menue.CB_anlagen_feb.Value = False Then
Worksheets("Februar").PageSetup.PrintArea = "A1:I75"
Worksheets("Februar").PrintOut
ElseIf UF_menue.CB_feb.Value = False And UF_menue.CB_anlagen_feb.Value = True Then
Worksheets("Anlage - Mitarbeiter").PageSetup.PrintArea = "A41:H79"
Worksheets("Anlage - Mitarbeiter").PrintOut
End If
'###########März#############
If UF_menue.CB_mrz.Value = True And UF_menue.CB_anlagen_mrz.Value = True Then
Worksheets("März").PageSetup.PrintArea = "A1:I75"
Worksheets("Anlage - Mitarbeiter").PageSetup.PrintArea = "A81:H119"
Worksheets("März").PrintOut
Worksheets("Anlage - Mitarbeiter").PrintOut
ElseIf UF_menue.CB_mrz.Value = True And UF_menue.CB_anlagen_mrz.Value = False Then
Worksheets("März").PageSetup.PrintArea = "A1:I75"
Worksheets("März").PrintOut
ElseIf UF_menue.CB_mrz.Value = False And UF_menue.CB_anlagen_mrz.Value = True Then
Worksheets("Anlage - Mitarbeiter").PageSetup.PrintArea = "A81:H119"
Worksheets("Anlage - Mitarbeiter").PrintOut
End If
'###########April###########
If UF_menue.CB_apr.Value = True And UF_menue.CB_anlagen_apr.Value = True Then
Worksheets("April").PageSetup.PrintArea = "A1:I75"
Worksheets("Anlage - Mitarbeiter").PageSetup.PrintArea = "A121:H159"
Worksheets("April").PrintOut
Worksheets("Anlage - Mitarbeiter").PrintOut
ElseIf UF_menue.CB_apr.Value = True And UF_menue.CB_anlagen_apr.Value = False Then
Worksheets("April").PageSetup.PrintArea = "A1:I75"
Worksheets("April").PrintOut
ElseIf UF_menue.CB_apr.Value = False And UF_menue.CB_anlagen_apr.Value = True Then
Worksheets("Anlage - Mitarbeiter").PageSetup.PrintArea = "A121:H159"
Worksheets("Anlage - Mitarbeiter").PrintOut
End If
'###########Mai###########
If UF_menue.CB_mai.Value = True And UF_menue.CB_anlagen_mai.Value = True Then
Worksheets("Mai").PageSetup.PrintArea = "A1:I75"
Worksheets("Anlage - Mitarbeiter").PageSetup.PrintArea = "A161:H199"
Worksheets("Mai").PrintOut
Worksheets("Anlage - Mitarbeiter").PrintOut
ElseIf UF_menue.CB_mai.Value = True And UF_menue.CB_anlagen_mai.Value = False Then
Worksheets("Mai").PageSetup.PrintArea = "A1:I75"
Worksheets("Mai").PrintOut
ElseIf UF_menue.CB_mai.Value = False And UF_menue.CB_anlagen_mai.Value = True Then
Worksheets("Anlage - Mitarbeiter").PageSetup.PrintArea = "A161:H199"
Worksheets("Anlage - Mitarbeiter").PrintOut
End If
.
.
.



Die Option mittels "ThisWorkbook.ExportAsFixedFormat" ist leider nicht hilfreich da hier immer alles Arbeitsblätter geruckt werden unabhängig vom erstellen Druckbereich.

Vielen Dank für eure Hilfe!

drambeldier
20.08.2017, 16:34
Moin,

Printout kann mit Parametern aufgerufen werden, siehe hier (http://learnexcelmacro.com/wp/2014/06/excel-macro-to-print/), Schreibweise ganz unten.

In meiner Installation klappt das Erstellen der Datei, wenn beim Parameter PrToFilename ein Pfad mitgegeben wird - der Dateiname langt nicht. Nur wird komischerweise da ein Postscript-Dokument erzeugt. Muss an meiner Installation liegen :-(