Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema InputBox
BildScreenshot zu InputBox InputBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

pdf-Druck laufende Seitennummerierung umgehen | Herbers Excel-Forum


Betrifft: pdf-Druck laufende Seitennummerierung umgehen von: Sandra
Geschrieben am: 02.02.2010 14:36:04

Hallo Ihr Lieben.

Derzeit nutze ich, folgendes Makro:

Sub PDF_Print_Sheet()
    'Modifiziert
    Dim wks As Worksheet
    For Each wks In ActiveWindow.SelectedSheets
        With wks
            .Select
            .ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
             Environ("userprofile") & "\Desktop\" & .Name & ".pdf", Quality:=xlQualityStandard,  _
_
            IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
            True
        End With
    Next wks
End Sub
Das läuft fast super - bei den meisten jedenfalls.

Das Problem soll aber (ersteinmal :-) ) nicht Euers sein.

Ich muss mir jetzt noch 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 Seitennummerierungd er Tabellenblätter beibehalten werden, die mit den Variablen [Seite] & [Seiten] (also: Seite [Seite] & con 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 (daher auch die Ausführung: Environ("userprofile") & "\Desktop\" & .Name & ".pdf" beim o. g. Makro) und ggfs. auch mit unterschiedlichen Adobe-Ausgaben 8.0, 9.0 etc. Die Excelversion ist bei allen Exdel 2007.

Ich danke Euch herzlichst
Eure Sandra!

  

Betrifft: AW: pdf-Druck laufende Seitennummerierung umgehen von: Ramses
Geschrieben am: 02.02.2010 14:55:09

Hallo

Wähle im Druckdialog "Gesamte Arbeitsmappe" und nicht "Ausgewählte Blätter",... dann sollte das tun.

Dieser VBA-code ist unabhängig von der installierten Adobe-Version da der Ausdruck über das MS-Addin PDF-Druck erfolgt. Daher ist es wichtig, dass dieses AddIn auf jedem Rechner installiert ist.

Gruss Rainer


  

Betrifft: AW: pdf-Druck laufende Seitennummerierung umgehen von: Sandra
Geschrieben am: 02.02.2010 15:41:43

Hey Ralf,

habe ich probiert.

Auch speichern unter - als pdf oder Konvertieren in pdf - überall wird die Nummerierung nicht übernommen.

Frage zum oben stehenden Makro - kann es noch wichtig sein, welches ServicePack installiert ist???

Lieben Gruß
Sandra


  

Betrifft: Rainer - nicht Ralf - MEIN Fehler - SORRY!!! von: Sandra
Geschrieben am: 02.02.2010 16:33:56

Sorry - Rainer meinte ich natürlich.

Habe gerade mit unserem IT-Fachmann telefoniert - der heißt Ralf. :-)

Du warst aber gemeint.


  

Betrifft: AW: Rainer - nicht Ralf - MEIN Fehler - SORRY!!! von: Sandra
Geschrieben am: 02.02.2010 16:51:52

Achso - Frage noch offen sollte ich auch anhaken damit Ihr das wisst. Lieben Gruß
Sandra


  

Betrifft: ICH BITTE UM HILFE - ICH KOMME ALLEIN NICHT WEITER von: Sandra
Geschrieben am: 04.02.2010 08:09:49

BITTE!

Danke Eure Sandra


  

Betrifft: versuch mal sowas... von: Tino
Geschrieben am: 04.02.2010 09:37:05

Hallo,
vor dem Druck werden die Markierten Seiten durchnummeriert danach wird dies wieder zurückgestellt.

Sub PDF_Print_Sheet()
Dim i As Integer
Dim meAr()
Dim wks As Worksheet

With ActiveWindow
ReDim meAr(.SelectedSheets.Count - 1, 1)
    For Each wks In .SelectedSheets
        meAr(i, 0) = wks.Name
        meAr(i, 1) = wks.PageSetup.RightFooter
        wks.PageSetup.RightFooter = "Seite " & i + 1 & " von " & .SelectedSheets.Count
        i = i + 1
    Next wks
         
         For Each wks In .SelectedSheets
             With wks
                 .Select
                 .ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
                  Environ("userprofile") & "\Desktop\" & .Name & ".pdf", _
                  Quality:=xlQualityStandard, IncludeDocProperties:=True, _
                  IgnorePrintAreas:=False, OpenAfterPublish:=True
             End With
         Next wks
    
    If i > 0 Then
        For i = LBound(meAr) To UBound(meAr)
            Sheets(meAr(i, 0)).PageSetup.RightFooter = meAr(i, 1)
        Next i
    End If
End With

End Sub

Gruß Tino


  

Betrifft: Passt leider nicht von: Sandra
Geschrieben am: 04.02.2010 10:20:32

Hallo Tino,

dabei passiert folgendes:

ich markiere 3 Tabellenblätter - bekomme 3 pdf-Dateien - will aber nur eine. Zudem ist dann die Nummerierung falsch, wenn ein Tabellenblatt mehrere Seiten hat.

Ergebnis ist also:

Tabellenblatt 1 - eine Seite - Nummerierung: 1 von 3
Tabellenblatt 2 - eine Seite - Nummerierung: 2 von 3
Tabellenblatt 3 - zwei Seiten - Nummerierung: 3 von 3 - 3 von 3 steht somit auf der ersten und auf der zweiten Seite des dritten Tabellenblattes. Eigentlich sollte bei diesem Test jetzt eine Datei mit vier Seiten rauskommen, die dann aber nicht nummeriert ist mit 1 von 4 bis 4 von 4.

Dann könnte ich ja einfach als pdf drucken.

Ich möchte gerne, dass ich eine beliebige Anzahl von Tabellenblätern anklicken kann (derzeit sind es insgesamt 45). Wenn ich dann das Makro ausführe möchte ich aus den Markierten Tabellenblättern ein gesamtes pdf-Dokument haben. Die Nummerierung soll entsprechend der Tabellenblätter beibehalten werden.

Bsp. Tabellenblatt 1 hat 3 Seiten dann soll auf den ersten drei Seiten des pdf-Dokumentes 1 von 3, 2 von 3, 3 von 3 stehen. Dann - Seite 4 fängt an mit Seite 1 von x (je nachdem, wie viele Seiten das zweite Tabellenblatt hat) etc.

Die Datei sollte dann mit Namen der Excel-Datei automatisch auf dem Desktop abgespeichert werden.

Lieben Gruß
Sandra


  

Betrifft: ich kann es bei mir nicht testen, sorry oT. von: Tino
Geschrieben am: 04.02.2010 23:05:29

Frage offen


  

Betrifft: versuche es mal so... von: Tino
Geschrieben am: 05.02.2010 10:24:17

Hallo,
kopiere die Markierten Tabellen in eine neue Datei und speichere diese als PDF.

Jetzt sollte die Reihenfolge stimmen.

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
Gruß Tino


  

Betrifft: Sub PDF_Print_Sheet() von: Sandra
Geschrieben am: 08.02.2010 17:10:19

Hallo Tino.

Das funktioniert leider auch nicht. Das nach einem Namen gefragt wird ist toll, aber - egal welchen ich eintrage, die Datei heißt immer "Name".

Aber auch die Seitennummerierung passt nicht. Ich habe wieder vier Dateien getestet mit je einer Seite. Auf jeder Seite des pdf-Dokumentes hätte 1 von 1 stehen sollen. Es stand aber 1 von 4, 2 von 4 etc.

Und dann habe ich noch eine Frage. Ich nutze in einer anderen Datei dieses Makro:

Sub PDF_Print_Sheet()
    'Modifiziert
    Dim wks As Worksheet
    For Each wks In ActiveWindow.SelectedSheets
        With wks
            .Select
            .ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
             Environ("userprofile") & "\Desktop\" & .Name & ".pdf", Quality:=xlQualityStandard,  _
_
            IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
            True
        End With
    Next wks
End Sub



Kann ich da den Teil von Dir mit einbinden? Und wenn ja, wo bzw. wie muss ich ihn einbinden?


If Dir(Desktop & strPDF_Name) <> "" Then
If MsgBox("Datei mit den Namen " & strPDF_Name & " schon vorhanden!" & vbCr & _
"Wollen Sie diese ersetzen?", vbYesNo) = vbNo Then


  

Betrifft: AW: Sub PDF_Print_Sheet() von: Sandra
Geschrieben am: 08.02.2010 17:11:51

Hab das DANKE und den Gruß vergessen. :-)

Gruß
Sandra


Beiträge aus den Excel-Beispielen zum Thema "pdf-Druck laufende Seitennummerierung umgehen"