Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Drucken und PDF erstellen mit Namen aus Zelle

Drucken und PDF erstellen mit Namen aus Zelle
15.09.2016 10:03:14
Rene
Hallo zusammen,
mein Programmcode läuft leider nicht.
Es wird auch keine Fehlermeldung angezeigt,es passiert garnichts.
Anbei mal der Code
Sub Schaltfläche6_Klick()
' Drucken und erstellen des Dokuments
Dim strPath As String
Dim strName As String
Sheets("Kennzahl").Select
Application.PrintCommunication = False
With ActiveSheet.PageSetup
.PrintTitleRows = ""
.PrintTitleColumns = ""
End With
Application.PrintCommunication = True
ActiveSheet.PageSetup.PrintArea = "$A$1:$I$68"
Application.PrintCommunication = False
With ActiveSheet.PageSetup
.LeftHeader = "&26Stand &D"
.CenterHeader = ""
.RightHeader = ""
.LeftFooter = _
"Erstellt: &D, Mirko Klötzner, Verpackungsplanung, Leipzig (710)"
.CenterFooter = ""
.RightFooter = "Seite: &P von &N" & Chr(10) & "(c) Schenker Deutschland AG"
.LeftMargin = Application.InchesToPoints(0.708661417322835)
.RightMargin = Application.InchesToPoints(0.708661417322835)
.TopMargin = Application.InchesToPoints(0.78740157480315)
.BottomMargin = Application.InchesToPoints(0.78740157480315)
.HeaderMargin = Application.InchesToPoints(0.31496062992126)
.FooterMargin = Application.InchesToPoints(0.31496062992126)
.PrintHeadings = False
.PrintGridlines = False
.PrintComments = xlPrintNoComments
.PrintQuality = Array(600, 598)
.CenterHorizontally = False
.CenterVertically = False
.Orientation = xlLandscape
.Draft = False
.PaperSize = xlPaperA3
.FirstPageNumber = xlAutomatic
.Order = xlDownThenOver
.BlackAndWhite = False
.Zoom = False
.FitToPagesWide = 1
.FitToPagesTall = 1
.PrintErrors = xlPrintErrorsDisplayed
.OddAndEvenPagesHeaderFooter = False
.DifferentFirstPageHeaderFooter = False
.ScaleWithDocHeaderFooter = True
.AlignMarginsHeaderFooter = True
.EvenPage.LeftHeader.Text = ""
.EvenPage.CenterHeader.Text = ""
.EvenPage.RightHeader.Text = ""
.EvenPage.LeftFooter.Text = ""
.EvenPage.CenterFooter.Text = ""
.EvenPage.RightFooter.Text = ""
.FirstPage.LeftHeader.Text = ""
.FirstPage.CenterHeader.Text = ""
.FirstPage.RightHeader.Text = ""
.FirstPage.LeftFooter.Text = ""
.FirstPage.CenterFooter.Text = ""
.FirstPage.RightFooter.Text = ""
End With
Application.PrintCommunication = True
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
IgnorePrintAreas:=False
strPath = "L:\Verpackungsplanung\290 Auswertungen\290_03_SNR ohne PV" & _
"\290_03_01_SN_ohne_PV_PDF\"
With ThisWorkbook
.Sheets("Kennzahl").Copy
strName = .Sheets("Kennzahl").Range("M5").Value
End With
With ActiveWorkbook
.ExportAsFixedFormat Type:=xlTypePDF, _
Filename:=strPath & strName & ".pdf", _
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=False
.Close
End With
End Sub

Vielen Dank im Voraus.
lg

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Drucken und PDF erstellen mit Namen aus Zelle
17.09.2016 07:02:29
fcs
Hallo Rene,
es ist merkwürdig, dass du nicht einmal Fehlermeldungen angezeigt bekommst.
Ich hab dein Makro unter Windows Vista/Office 2010 getestet.
1. Problem - Anweisungen mit Application.PrintCommunication
Bei mir stürzte Excel am Ende ab, weil einer der Werte für die PageSeup-Parameter nicht kompatibel mit meinem aktiven Druken war. Die Problemzeile konnte ich erst identifizieren, nachdem ich alle Zeilen mit
Application.PrintCommunication = False / = True
auskommentiert hatte.
Hier kann man ruhig auf den von Microsoft in der Hilfe zu "PrintCommunication" versprochenen Beschleunigung der Makroausführung verzichten.
2. Problem - der PageSetup-Parameter PrintQuality
Dieser Parameter ist spezifisch für den Drucker. Hat der aktive Drucken diese Einstell-Möglichkeit nicht, dann kommt es zu einem Fehler.
Diese Einstellung kann man weglassen, es sei denn sie ist zwingend gewünscht. Dann muss man eine Entsprechende Prüfung auf den Namen des aktiven Drukers oder eine ander Fehlerbehandlung einbauen.
3. Aktives Fenster bei der Kombination Windows 10 / neuere Office-Vesionen
Es gibt ein Problem mit dem aktiven Fenster wenn unter VBA neue Dateien angelegt werden.
Die neue Datei ist nicht (immer?) atomatisch auch im aktiven Fenster.
Hier konnte ich die entsprechende Anpassung jetzt nur aus der Erinnerung machen.
Gruß
Franz
Sub Schaltfläche6_Klick()
' Drucken und erstellen des Dokuments
Dim strPath As String
Dim strName As String
Dim wkbCopy As Workbook
Sheets("Kennzahl").Select
'    Application.PrintCommunication = False
With ActiveSheet.PageSetup
.PrintTitleRows = ""
.PrintTitleColumns = ""
End With
'    Application.PrintCommunication = True
ActiveSheet.PageSetup.PrintArea = "$A$1:$I$68"
'    Application.PrintCommunication = False
With ActiveSheet.PageSetup
.LeftHeader = "&26Stand &D"
.CenterHeader = ""
.RightHeader = ""
.LeftFooter = _
"Erstellt: &D, Mirko Klötzner, Verpackungsplanung, Leipzig (710)"
.CenterFooter = ""
.RightFooter = "Seite: &P von &N" & Chr(10) & "(c) Schenker Deutschland AG"
.LeftMargin = Application.InchesToPoints(0.708661417322835)
.RightMargin = Application.InchesToPoints(0.708661417322835)
.TopMargin = Application.InchesToPoints(0.78740157480315)
.BottomMargin = Application.InchesToPoints(0.78740157480315)
.HeaderMargin = Application.InchesToPoints(0.31496062992126)
.FooterMargin = Application.InchesToPoints(0.31496062992126)
.PrintHeadings = False
.PrintGridlines = False
.PrintComments = xlPrintNoComments
'        .PrintQuality = Array(600, 598) 'Problem: dieser Wert ist druckerspezifisch _
und funktioniert mit den Druckern, die diese Einstellmöglichkeit haben
.CenterHorizontally = False
.CenterVertically = False
.Orientation = xlLandscape
.Draft = False
.PaperSize = xlPaperA3
.FirstPageNumber = xlAutomatic
.Order = xlDownThenOver
.BlackAndWhite = False
.Zoom = False
.FitToPagesWide = 1
.FitToPagesTall = 1
.PrintErrors = xlPrintErrorsDisplayed
.OddAndEvenPagesHeaderFooter = False
.DifferentFirstPageHeaderFooter = False
.ScaleWithDocHeaderFooter = True
.AlignMarginsHeaderFooter = True
.EvenPage.LeftHeader.Text = ""
.EvenPage.CenterHeader.Text = ""
.EvenPage.RightHeader.Text = ""
.EvenPage.LeftFooter.Text = ""
.EvenPage.CenterFooter.Text = ""
.EvenPage.RightFooter.Text = ""
.FirstPage.LeftHeader.Text = ""
.FirstPage.CenterHeader.Text = ""
.FirstPage.RightHeader.Text = ""
.FirstPage.LeftFooter.Text = ""
.FirstPage.CenterFooter.Text = ""
.FirstPage.RightFooter.Text = ""
End With
'    Application.PrintCommunication = True
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
IgnorePrintAreas:=False
strPath = "L:\Verpackungsplanung\290 Auswertungen\290_03_SNR ohne PV" & _
"\290_03_01_SN_ohne_PV_PDF\"
With ThisWorkbook
.Sheets("Kennzahl").Copy
strName = .Sheets("Kennzahl").Range("M5").Value
End With
'Problem des aktiven Fensters umgehen, wenn unter Windows10/neueste Office-Versionen _
in einem Makro eine neue Arbeitsmappe erstellt/geöffnet wird
Set wkbCopy = Application.Workbooks(Application.Workbooks.Count)
wkbCopy.Activate
wkbCopy.Sheets(1).Select
With ActiveWorkbook
.ExportAsFixedFormat Type:=xlTypePDF, _
Filename:=strPath & strName & ".pdf", _
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=False
.Close
End With
End Sub

Anzeige
AW: Drucken und PDF erstellen mit Namen aus Zelle
19.09.2016 08:12:23
Rene
Hi Franz,
danke dir ist mir so garnicht aufgefallen :).
Vielen Dank funktioniert perfekt, ich wünsche eine schöne Woche
lg
Rene

324 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige