Sub PDF_Print_Sheet()
Sandra
Ich muss ein Makro zusammen bauen, bei dem ich Eure Hilfe benötige. Es funktioniert scheinbar nur über diesen Weg der VBA-Programmierung.
Ich habe eine Exceldatei mit vielen Tabellenblättern. Nun möchte ich alle markierten Tabellenblätter als pdf drucken - von mir aus auch speichern als pdf. Dabei soll aber die Seitennummerierung der Tabellenblätter beibehalten werden, die mit den Variablen [Seite] & [Seiten] (also: Seite [Seite] & von Seite [Seiten]) festgelegt sind. Habe ich im TB1 3 Seiten (1 von 3, 2 von 3 und 3 von 3) und im TB2 2 Seiten (1 von 2 und 2 von 2), dann möchte ich diese Seitenzahlen auch im pdf-Ausdruck wiederfinden und nicht 1 von 5, 2 von 5 etc.
Geht das irgendwie? Und wenn ja, wie?
P. s. Das Makro muss für verschiedene Betriebssysteme (XP, Vista und 7) funktionieren (ggfs. mit dieser Funktion: Environ("userprofile") & "\Desktop\" & .Name & ".pdf") und ggfs. auch mit unterschiedlichen Adobe-Ausgaben 8.0, 9.0 etc. Die Excelversion ist bei allen Excel 2007. Wenn es über die Funktion Speichern unter als pdf" läuft ist es ja egal welche Adobe-Ausggabe jeder einzelne hat.
Das Makro sollte so aufgebaut sein, das die pdf-Datei auf dem Desktop gespeichert wird. Dazu könnte dann eine Abfrage eingebaut werden, die den Namen der Datei erfragt und, die ggfs. prüft, ob eine DAtei mit diesem Namen schon vorhanden ist.
Ich hatte von Tino einen Lösungsvorschlag bekommen. Der sieht wie folgt aus:
Sub Makro1()
Dim oWB As Workbook
Dim oSh As Worksheet
Dim objShell As Object
Dim Desktop As String
Dim strPDF_Name As String
strPDF_Name = InputBox("Geben sie den Namen der Pdf Datei an", "Name vergeben")
If strPDF_Name = "" Then Exit Sub
strPDF_Name = IIf(Right$(LCase(strPDF_Name), 4) = ".pdf", strPDF_Name, strPDF_Name & ".pdf")
Set objShell = CreateObject("WScript.Shell")
Desktop = objShell.SpecialFolders("Desktop")
Desktop = IIf(Right$(Desktop, 1) = "\", Desktop, Desktop & "\")
If Dir(Desktop & strPDF_Name) "" Then
If MsgBox("Datei mit den Namen " & strPDF_Name & " schon vorhanden!" & vbCr & _
"Wollen Sie diese ersetzen?", vbYesNo) = vbNo Then
Exit Sub
End If
End If
Application.ScreenUpdating = False
ActiveWindow.SelectedSheets.Copy
Set oWB = ActiveWorkbook
For Each oSh In oWB.Worksheets
oSh.PageSetup.RightFooter = "Seite &P von &N"
Next oSh
oWB.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
Desktop & "Name.pdf", Quality:=xlQualityStandard, IncludeDocProperties:= _
True, IgnorePrintAreas:=False, OpenAfterPublish:=False
oWB.Close False
Application.ScreenUpdating = True
End Sub
Dabei gibt es aber zwei Probleme.
1. Die Datei wird nicht mit dem Namen gespeichert, den ich im Feld eingetragen habe. Diese Datei heißt immer "Name".
2. Die Nummerierung ist nach wie vor fortlaufend.
Kann mir hierbei irgendjemand weiterhelfen?
P. s. Ich habe dieses neu verfasst, da mein alter Beitrag nicht mehr in der Forumsliste auftaucht.
Liebe Grüße
Sandra
Ich danke Euch herzlichst
Eure Sandra!