Excel - VBA Speichern als PDF - Seitenformat

MickH74

Lieutenant
Registriert
Apr. 2009
Beiträge
600
Hallo liebes Forum,

ich möchte per VBA in Excel gerne einen festgelegten Druckbereich als PDF speichern.

Dabei habe ich das Problem, dass die Seitenränder oder das Seitenformat bei unterschiedlichen Computern auf denen ich die Datei öffne unterschiedlich ausfällt und damit manchmal Spalten auf die nächste Seite rutschen.
Auf den Computern sind unterschiedliche Drucker voreingestellt und ich sehe, dass eine Änderung des Druckers sich auch auf das Speichern als PDF per Makro auswirkt.
Nun frage ich mich, warum der voreingestellte Drucker relevant ist, denn das Speichern als PDF sollte doch über einen "PDF-Drucker" als Drucker gehen und unabhängig vom gerade gewählten Drucker sein.

Ich verwende den Befehl:
Sheets("Druck").ExportAsFixedFormat Type:=xlTypePDF, Filename:=Str_Dateiname, Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False

Wenn ich mir mit Worksheets("Druck").PageSetup.RightMargin die Seitenränder anzeigen lasse, dann sind sie auf allen Computern identisch und unabhängig vom ausgewählten Drucker.
Auch das Papierformat mit Worksheets("Druck").PageSetup.PaperSize gibt immer den Wert 9 raus.
Seitenränder und Papierformat sind also gleich und trotzdem wird je nach ausgewähltem Drucker mal eine Spalte abgeschnitten und mal nicht.

Kann mir jemand helfen? Das Makro muss zuverlässig immer den festgelegten Druckbereich in gleicher Seitengröße als PDF speichern.

Reicht es, wenn ich den Drucker vorher auf "Microsoft Print to PDF" festlege?
Also z.B. mit : Application.ActivePrinter = "Microsoft Print to PDF auf Ne03:"
Aber die Ne-Nummer ist nicht bei jedem Computer gleich und eventuell ist der Drucker ja gar nicht installiert...

Danke schon mal und Gruß aus Viersen,
Mick
 
Ist bei den Druckern vielleicht mal A4 und mal Letter eingestellt? Oder die Drucker selbst haben vielleicht intern andere Seitenränderabstände.
 
Bei allen ist A4 gewählt. Aber wahrscheinlich ist der Druckbereich der einzelnen Drucker unterschiedlich.

Kann man nicht vorher alle Parameter für den PDF-Druck festlegen, also DIN A4, Seitenränder, Hochformat usw.
Und wenn ich dann ein PDF erzeuge, muss das doch immer gleich aussehen, ganz egal welcher Drucker gewählt ist und welche Papiergröße dort eingestellt ist. Oder?
 
Ja, dass ist schon eine nervige Angelegenheit.
Office scheint sich beim aktiven Drucker zu bedienen, um die Seite in "Druckform" darzustellen.
Was meiner Meinung auch nur solala funktioniert.
Wenn es nicht zu extrem ist, koennte man noch die Seitenskalierung aktivieren.
Ansonsten, falls es nur am Wechsel des Druckers liegt:
Einfach alle Ne-Kanaele abgrasen, bis man den richtigen findet.

Code:
DruckerAktiv = Application.ActivePrinter ' aktuellen Drucker merken

For i = 0 To 9                           ' Schleife ueber alle Ne Kanaele, um den korrekten zu finden.
    On Error Resume Next
    Application.ActivePrinter = "Microsoft Print to PDF auf Ne0" & i & ":"
Next i
    
ActiveSheet.PrintOut preview:=False      ' drucken
Application.ActivePrinter = DruckerAktiv ' Drucker zurücksetzen
 
Vielen Dank für Deinen Vorschlag! Wirklich toll, wie schnell man in diesem Forum Hilfe bekommt!

Das scheint mir die beste Lösung zu sein. Aber richtig glücklich bin ich damit nicht.
Immerhin ist es ein Standard Druckertreiber unter Windows, so dass die Chance recht hoch ist, dass er auch vorhanden ist.
 
Ich weiß nicht ob es hilft aber ich hatte mal ein ähnliches Problem.

Ich hab dann einfach den Druckbereich (Spalten und Zeilen) händisch ausgewählt und als Druckbereich definiert. (Seitenlayout>Druckbereich>Druckbereich festlegen)
Danach hat es auch mit VBA korrekt gedruckt.
Ka ob es bei dir auch hilft oder ob das auf dein Problem übertragbar ist.
 
Ich arbeite schon mit einem festgelegten Druckbereich. Das hilft aber leider nicht. Trotzdem Danke für den Hinweis :-)
 
Zurück
Oben