Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

PageSetup.PaperSize -Eigenschaft

Forumthread: PageSetup.PaperSize -Eigenschaft

PageSetup.PaperSize -Eigenschaft
16.11.2008 11:43:09
Jürgen
Hallo,
ich möchte mit Excel 2007 VBA eine Excel-Arbeitsmappe mit mehreren sehr großen Tabellenblättern als PDF-Datei erstellen, in der die Größe des PDF-Seitenformats aus der Gesamtbreite der Spalten und der Gesamthöhe aller Zeilen bestimmt wird. Die PDF-Datei wird niemals ausgedruckt werden, sondern nur auf dem Bildschirm mit entsprechendem Zoom angesehen.
Die benutzerdefinierten Einstellungen des PDF-Seitenformats kann ich im PDF-Druckertreiber vorgeben, doch bei allen Tabellenblättern, bei denen unter „Seitenlayout / Größe“ das Seiten-/Papierformat wie z. B. A4 oder Letter bereits vorgegeben ist, werden die benutzerdefinierten Einstellungen im PDF-Druckertreiber nicht akzeptiert. Ist das Seiten-/Papierformat im Tabellenblatt nicht vorgegeben, funktioniert das problemlos.
Ich habe es mit der VBA „PageSetup.PaperSize –Eigenschaft“ versucht, doch bei der Verwendung der XlPaperSize-Konstanten "xlPaperUser" für benutzerdefiniert bekomme ich den Laufzeitfehler ‚1004‘, der besagt, dass „Die PaperSize-Eigenschaft des PageSetup-Objektes kann nicht festgelegt werden.“
Wie kann ich die Vorgabe des Seiten-/Papierformats im Tabellenblatt löschen? Hat jemand eine Idee?
Im Folgenden der VBA-Code für meine Tests:
' MS-Office 2007 Prof. Plus SP1
' Auszug aus Excel 2007 -Entwicklerreferenz
' PageSetup.PaperSize -Eigenschaft
' Gibt die Größe des Papiers zurück oder legt sie fest.
' XlPaperSize-Wert mit Lese-/Schreibzugriff.
' **************
' Syntax: Ausdruck.PaperSize
' Ausdruck: Eine Variable, die ein PageSetup-Objekt darstellt
' Erstellungsdatum des Makros: 16.11.2008

Sub Makro()
With ActiveSheet.PageSetup
.PaperSize = xlPaperA4      ' funktioniert problemlos
' Benutzer-definiertes Seiten-/Papierformat festlegen
' (Seitenlayout / Größe / Papierformate)
' über die XlPaperSize-Konstante "xlPaperUser"
.PaperSize = xlPaperUser    ' erzeugt Laufzeitfehler '1004'
' Erläuterung zum Laufzeitfehler '1004' :
' Die PaperSize-Eigenschaft des PageSetup-Objektes kann nicht festgelegt werden.
End With
End Sub


Gruß
Jürgen

Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: PageSetup.PaperSize -Eigenschaft
16.11.2008 12:23:14
Hajo_Zi
Halo Jürgen,
warum benutz Du einen Drucker, mache doch einfach speichen unter PDF

AW: PageSetup.PaperSize -Eigenschaft
16.11.2008 15:25:57
Jürgen
Hallo Hajo,
danke für Deine rasche Antwort. Ich weiß, dass es für Office 2007 von Microsoft ein Add-In gibt, um PDF-Dateien für den "normalen" Gebrauch zu erstellen.
Meine umfangreichen Erfahrungen mit dem Add-In sind für meine "nicht-normalen" Zwecke absolut ungeeignet, weil sehr wenig flexibel.
Der PDF-Drucker ( in Wirklichkeit ist das natürlich ein virtueller Drucker) von ABBYY entspricht meinen Anforderungen voll, doch liegt es offensichtlich an Excel, dass ich weder über das Seitenlayout-Menü noch über die VBA-Eigenschaft "PageSetup.PaperSize" eine Benutzer-definierte Blattgröße einstellen kann.
Eigentlich sollte ich das mit der XlPaperSize-Konstanten "xlPaperUser" bewerkstelligen können, die offensichtlich einmal dafür vorgesehen war, jetzt aber zu einem Laufzeitfehler führt.
Hajo, dennoch danke.
Gruß´Jürgen
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

PageSetup.PaperSize in Excel VBA richtig nutzen


Schritt-für-Schritt-Anleitung

Um die PageSetup.PaperSize-Eigenschaft in Excel VBA korrekt zu verwenden, folge diesen Schritten:

  1. Öffne Excel 2007 und erstelle ein neues Arbeitsblatt.

  2. Gehe in den VBA-Editor: Drücke ALT + F11.

  3. Füge ein neues Modul hinzu: Klicke mit der rechten Maustaste auf "VBAProject (DeineDatei.xlsx)" > Einfügen > Modul.

  4. Füge den folgenden VBA-Code ein:

    Sub Makro()
    With ActiveSheet.PageSetup
       .PaperSize = xlPaperA4      ' Setzt das Papierformat auf A4
       ' Versuche, ein benutzerdefiniertes Papierformat zu setzen
       .PaperSize = xlPaperUser    ' Dies könnte einen Laufzeitfehler erzeugen
    End With
    End Sub
  5. Führe das Makro aus: Drücke F5 im VBA-Editor.

Beachte, dass das Setzen von xlPaperUser möglicherweise nicht funktioniert, wenn das Seitenlayout bereits eine Papiergröße definiert hat.


Häufige Fehler und Lösungen

  • Laufzeitfehler '1004': Dieser Fehler tritt auf, wenn du versuchst, die PaperSize-Eigenschaft auf xlPaperUser zu setzen, während bereits eine andere Papiergröße festgelegt ist. Um diesen Fehler zu vermeiden, stelle sicher, dass du vorher die vorhandene PaperSize zurücksetzt oder löschen kannst.

  • Papiergröße wird nicht akzeptiert: Wenn du die benutzerdefinierte Größe nicht festlegen kannst, versuche, die PaperSize auf eine Standardgröße (z.B. xlPaperA4) zu setzen, bevor du es erneut mit xlPaperUser versuchst.


Alternative Methoden

Wenn du Schwierigkeiten mit der PageSetup.PaperSize-Eigenschaft hast, kannst du auch die folgenden Methoden in Betracht ziehen:

  • PDF-Drucker verwenden: Anstatt eine Papiergröße in Excel festzulegen, kannst du direkt auf einen virtuellen PDF-Drucker drucken. Wähle dazu unter "Drucken" den PDF-Drucker aus und speichere die Datei.

  • Add-Ins für PDF-Erstellung: Es gibt verschiedene Add-Ins für Excel, die eine flexiblere PDF-Erstellung ermöglichen. Prüfe, ob diese für deine Anforderungen geeignet sind.


Praktische Beispiele

Hier ist ein Beispiel, wie du ein benutzerdefiniertes Papierformat in einem Excel-Dokument nutzen kannst:

Sub ErstellePDF()
   With ActiveSheet.PageSetup
       .PaperSize = xlPaperA4
       ' Hier kannst du weitere Einstellungen vornehmen
       .Orientation = xlLandscape    ' Querformat
   End With

   ' Exportiere das Arbeitsblatt als PDF
   ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:="DeinPfad\Dateiname.pdf"
End Sub

Dieser Code setzt die Papiergröße auf A4 und exportiert das Arbeitsblatt als PDF.


Tipps für Profis

  • Immer zuerst testen: Bevor du umfangreiche VBA-Skripte schreibst, teste einfache Teile, um sicherzustellen, dass die PageSetup.PaperSize-Eigenschaft wie gewünscht funktioniert.

  • Verwende xlpaperuser mit Bedacht: Die Verwendung von xlPaperUser kann in vielen Fällen problematisch sein. Überlege, ob du wirklich eine benutzerdefinierte Größe benötigst oder ob eine Standardgröße ausreichend ist.

  • Dokumentation nutzen: Schau dir die VBA-Dokumentation von Microsoft an, um mehr über die verschiedenen PageSetup-Eigenschaften zu erfahren.


FAQ: Häufige Fragen

1. Warum erhalte ich einen Laufzeitfehler, wenn ich xlPaperUser verwende?
Dieser Fehler tritt auf, weil die PaperSize-Eigenschaft nicht auf xlPaperUser gesetzt werden kann, wenn bereits eine andere Größe definiert ist.

2. Wie kann ich die Papiergröße in Excel 2007 ändern?
Du kannst die PageSetup.PaperSize-Eigenschaft in einem VBA-Skript verwenden, um die Papiergröße für das aktive Arbeitsblatt festzulegen. Achte darauf, dass du vorher keine andere Größe definiert hast.

3. Gibt es eine Möglichkeit, die Papiergröße vor dem Drucken zu ändern?
Ja, du kannst die PageSetup-Eigenschaft verwenden, um die Papiergröße festzulegen, bevor du den Druckbefehl ausführst oder das Arbeitsblatt als PDF speicherst.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige