Live-Forum - Die aktuellen Beiträge
Datum
Titel
29.03.2024 13:14:12
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1548to1552
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

PDF aus Selection

PDF aus Selection
23.03.2017 17:40:46
NikDa
Hallo zusammen,
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

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

Betreff
Datum
Anwender
Anzeige
AW: PDF aus Selection
24.03.2017 05:08:13
fcs
Halo NikDa,
wenn die Reihenfolge im PDF abweisend sein soll von der Reihenfolge der Tab-Register in der Excel-Mappe, dann muss man die Reihenfolge vor dem PDF-Export anpassen und danach gf. wieder zurücksetzen.
in Problem ist auch die Zeile
            From:=166, _

Diese gibt die Startseite für die PDF-Ausgabe an und führt zu einem Fehler, wenn die Excelblätter weniger Seiten liefern.
LG
Franz
Sub bb()
Dim arrOriginal() As String, arrPDF, intS As Integer
Dim wkb As Workbook, objSheet As Object
Dim StatusCalc As Long
Set wkb = ActiveWorkbook
Set objSheet = ActiveSheet
arrPDF = Array( _
"Bericht_Übersicht", _
"Bericht_1_" & Status & "_" & Betrieb, _
"Bericht_2_" & Betrieb)
'Makrobremsen lösen
With Application
.ScreenUpdating = False
StatusCalc = .Calculation
.Calculation = xlCalculationManual
.EnableEvents = False
End With
With wkb
'Original-Reihenfolge merken
ReDim arrOriginal(1 To .Sheets.Count)
For intS = 1 To .Sheets.Count
arrOriginal(intS) = .Sheets(intS).Name
Next
'Blätter für PDF in Reihenfolge sortieren
For intS = UBound(arrPDF) To LBound(arrPDF) Step -1
.Sheets(arrPDF(intS)).Move before:=.Sheets(1)
Next
End With
Application.Calculate
Sheets(arrPDF).Select
ActiveSheet.ExportAsFixedFormat _
Type:=xlTypePDF, _
Filename:=Me.txtb_Speicherpfad & Me.txtb_Speichername & "_" & Betrieb & ".pdf", _
Quality:=xlQualityStandard, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=True
'Blätter für PDF selektiere
Sheets(arrPDF).Select
'PDF erzeugen und anzeigen
ActiveSheet.ExportAsFixedFormat _
Type:=xlTypePDF, _
Filename:="C:\Users\Public\Test\PDF\" & "TestSorted.pdf", _
Quality:=xlQualityStandard, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=True
'Original-Reihenfolge der Blätter wieder herstellen
With wkb
For intS = UBound(arrOriginal) To LBound(arrOriginal) Step -1
.Sheets(arrOriginal(intS)).Move before:=.Sheets(1)
Next
End With
Application.Calculate
objSheet.Select
'Makrobremsen zurücksetzen
With Application
.ScreenUpdating = True
.Calculation = StatusCalc
.EnableEvents = True
End With
End Sub

Anzeige
AW: PDF aus Selection
25.03.2017 12:04:46
NikDa
Hallo fcs,
besten Dank für die Hilfe :)
Viele Grüße
NikDa

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige