Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1324to1328
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-Makro

PDF-Makro
13.08.2013 10:21:28
Nik
Einen schönen guten Morgen zusammen..
..vor einiger Zeit hatte ich hier mal Hilfe erhalten bezüglich eines Makros, dass mir aus einem Excel-File ein PDF speichert. Das Makro kopiert jeweils die zu druckenden Seiten untereinander und speichert das dann als PDF. Mittlerweile ist mir unter Excel 2010 aufgefallen, dass wenn ich die zu druckenden Tabs hintereinander markiere und dann "speichern unter" mache, das gleiche Ergebnis herauskommt.
Nur jetzt stehe ich bereits wieder an, sprich ich komme in VBA bei den Anpassungen nicht weiter..:-(
Wie funktioniert es das Makro so anzupassen (für die markierten Seiten in Spalte A des Controll Centers) dass
1. das Makro die entsprechende Print-Areas wie in Spalte C im Controll-Center vermerkt einstellt
2. alle Seitenränder (oben, unten, links, rechts) alle auf 0 cm stellt
3. und gleichzeitig immer Querformat ausgibt
-------------
Sub MacheLangesPDF()
Const SheetQuelle As String = "Controll Center"
'Hier dein speichern-Pfad hinterlegen!
Const SavePath As String = "I:\JSXC\Data\Team\"
'Hier kannst du den "speichern-als" Namen ändern.
'Ich habe mal den Workbook-Namen + Datum/ZeitIndex voreingestellt.
Dim SaveFileName As String
SaveFileName = Left(ActiveWorkbook.Name, Len(ActiveWorkbook.Name) - 4) & "_" & Format(Now, " _
YYYYMMDD_HHMM")
Dim wkbOld As Workbook
Dim wkbNew As Workbook
Dim SheetNew As Worksheet
Dim RowLast As Long
Dim InsertUnderRow As Long
Dim r As Range
Set wkbOld = ActiveWorkbook
Workbooks.Add
Set wkbNew = ActiveWorkbook
Set SheetNew = ActiveSheet
With wkbOld.Sheets(SheetQuelle)
RowLast = .Cells(.Rows.Count, 3).End(xlUp).Row
'jeden Blattnamen durchgehen
For Each r In .Range(.Cells(3, 3), .Cells(RowLast, 3))
'wenn Bericht = ja
If .Cells(r.Row, 2) Then
'Kopieren
wkbOld.Sheets(r.Value).UsedRange.Copy
'und in neues Buch / Blatt einfügen
Range("A" & Range("A1").SpecialCells(xlCellTypeLastCell).Row + 1).PasteSpecial
Application.CutCopyMode = False
End If
Next r
'MÜSSTE eigentlich aktiviert sein, aber sicher ist sicher
wkbNew.Activate
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
SavePath & SaveFileName & ".pdf", Quality:=xlQualityStandard, IncludeDocProperties:= _
True, IgnorePrintAreas:=False, OpenAfterPublish:=True
wkbNew.Close False
End With
End Sub
---------------
https://www.herber.de/bbs/user/86821.xlsm
Das müsste ja irgendwie alles in die Schleife rein. Kann mir da jemand ein wenig helfen?
Vielen lieben Dank und Gruss
Nik

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: PDF-Makro
13.08.2013 13:24:18
Nik
Hallo zusammen...
...ich komme einfach nicht weiter, da fehlt mir wohl einfach der nötige Grips :-(
Den Code habe ich soweit eigentlich angepasst, aber irgendwo ist noch der Wurm drin..
Sub PDFDruck()
Const SheetQuelle As String = "Controll Center"
Dim RowLast As Long
Dim InsertUnderRow As Long
Dim r As Range
Dim wkbOld As Workbook
Set wkbOld = ActiveWorkbook
With wkbOld.Sheets(SheetQuelle)
RowLast = .Cells(.Rows.Count, 3).End(xlUp).Row
'jeden Blattnamen durchgehen
For Each r In .Range(.Cells(3, 3), .Cells(RowLast, 3))
'wenn Bericht = ja
If .Cells(r.Row, 2) Then
wkbOld.Sheets(r.Value).Select
wkbOld.Sheets(r.Value).PageSetup.PrintArea = Range(.Cells(4, 4), Cells(RowLast, 4))
Application.PrintCommunication = False
With ActiveSheet.PageSetup
.Orientation = xlLandscape
.LeftMargin = Application.InchesToPoints(0)
.RightMargin = Application.InchesToPoints(0)
.TopMargin = Application.InchesToPoints(0)
.BottomMargin = Application.InchesToPoints(0)
.HeaderMargin = Application.InchesToPoints(0)
.FooterMargin = Application.InchesToPoints(0)
End With
Application.PrintCommunication = True
End If
Next r
Selection.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"\\I:\JSXC\Data\Team\TestCockpit.pdf", Quality:= _
xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
OpenAfterPublish:=True
End With
End Sub
https://www.herber.de/bbs/user/86829.xlsm
Gerade hier:
wkbOld.Sheets(r.Value).PageSetup.PrintArea = Range(.Cells(4, 4), Cells(RowLast, 4))
kommt es zu einer Fehlermeldung. Vermutlich weil ich das mit den Zahlen in den Klammern einfach nicht schnalle :-(
Zusammengefasst: der Code soll einfach je nach "Haken" in Spalte A das Sheet markieren, Seitenränder, Querformat als auch Print-Area Spalte D einstellen.
Hat mir nicht jemand einen Tip was ich falsch mache?
Vielen lieben Dank und Gruss
Nik
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige