PDF aus Selection
23.03.2017 17:40:46
NikDa
nachdem ich nun schon ein paar Mal hier im Forum Hilfe gefunden haben, stehe ich nun vor einem Problem, bei dem ich trotz diverser Ansätze nicht weiterkomme.
Ich habe eine Excel aufgesetzt, die sich aus verschiedenen Arbeitsmappen unterschiedlich zusammensetzt und am Ende in einer Reihe von Berichtsblättern dargestellt wird.
Diese Blätter sollen in mehreren PDFs mit jeweils unterschiedlicher Zusammensetzung exportiert werden.
Bis jetzt habe ich probiert, dies über ein zweistufiges Verfahren zu machen:
1. Erstellung der Berichtsblätter, sowie Konfiguration des jeweiligen Druckbereichs
2. Selection und Export der Blätter
Code zum Formatieren des Druckbereichs:
Sub Seiteeinrichten()
Dim Druckbereich As String
Select Case Mid(wksBericht.Name, 9, 5)
Case "PersK"
Druckbereich = "D2:U35"
Case "Lohna"
Druckbereich = "D2:O17"
Case "Übers"
Druckbereich = "D3:R24"
End Select
Application.CutCopyMode = False
Application.PrintCommunication = False
With wksBericht
.PageSetup.PrintArea = Druckbereich
End With
Application.PrintCommunication = True
Application.PrintCommunication = False
With wksBericht.PageSetup
.LeftHeader = ""
.CenterHeader = ""
.RightHeader = ""
.LeftFooter = ""
.CenterFooter = ""
.RightFooter = ""
.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 = 1200
.CenterHorizontally = False
.CenterVertically = False
.Orientation = xlLandscape
.Draft = False
.PaperSize = xlPaperA4
.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 = ""
.Zoom = False 'Idee
End With
Application.PrintCommunication = True
End Sub
Danach kommt dann zum Exportieren:
.... restliches Makro
Sheets(Array( _
"Bericht_Übersicht", _
"Bericht_1_" & Status & "_" & Betrieb, _
"Bericht_2_" & Betrieb)).Select
Selection.ExportAsFixedFormat _
Type:=xlTypePDF, _
From:=166, _
Filename:=Me.txtb_Speicherpfad & Me.txtb_Speichername & "_" & Betrieb & ".pdf", _
Quality:=xlQualityStandard, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=True
End Sub
Das Problem hierbei ist, dass sich die Selektion des Exports auf die im jeweiligen Blatt ausgewählte Zelle bezieht, wodurch ich "leere" Blätter bekomme.
Sheets(...).Printout habe ich auch schon versucht, dass scheitert leider daran, dass die anschließende PDF nicht geöffnet werden kann.
ThisWorkbook(...).ExportfixedFileFormat [entsprechende Einstellungen...] hier würden die Blätter richtig rauskommen, allerdings nicht in der benötigten Sortierung
Wenn ich manuell die Blätter über drucken, pdf-erzeugen exportiere, dann greifen die Druckbereiche und alles funktioniert.
Die Sheets(...).Selection funktioniert auch wie gewollt.
Der bisher einzige Lösungsansatz hierzu den ich gefunden habe war der Befehl Application.PrintCommunication = False vor dem Einrichten des Druckbereichs. Leider half das bisher nicht.
Ich hoffe es hat einer eine gute Idee :)
Viele Grüße
NikDa