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

Forumthread: Mit VBA Seitengröße einstellen

Mit VBA Seitengröße einstellen
24.04.2019 09:10:16
Kerstin
Hallo zusammen!
Ich bin auf der Suche nach einem VBA Code oder IRGENDEINER anderen Möglichkeit meinen Tabellenblättern standardmäßig unterschiedliche Seitenformate für die Speicherung als PDF-Datei zuzuweisen. Die Seitenformate sind unter "eigene Papierformate" selbst definiert und mit Namen versehen. Im WWW finde ich leider nur "geht nicht":(
In der geöffneten Datei kann ich die Seitengrößen mühselig jedem Tabellenblatt zuordnen, sie bleiben erhalten, bis ich die Datei schließe... Beim nächsten öffnen wieder das gleiche Spiel!
Zur Info: Hier geht es NICHT um den Druckbereich...
Für Anregungen oder noch besser: Lösungen wäre ich super dankbar!
Liebe Grüße
Kerstin
Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Mit VBA Seitengröße einstellen
24.04.2019 09:22:28
Oberschlumpf
Hi Kerstin,
da du ja "per Hand" dein gewünschtes Ziel erreichst, hast du dabei schon mal den Makrorecorder gestartet?
Wenn ja, und es werden die von dir "per Hand" durchgeführten Befehle nicht aufgezeichnet, weiß ich leider auch keine andere Lösung.
Hilfts?
Ciao
Thorsten
AW: Mit VBA Seitengröße einstellen
24.04.2019 12:10:29
Kerstin
Hallo Thorsten,
mit dem Recorder hab ich es als erstes versucht, er setzt aber standardmäßig DinA4 ein, kann man auch nicht ändern :(
Da ich 10 Tabellenblätter habe und alle ein anderes Papierformat haben müssen, ist es eeeeecht nervig, jedesmal die Formate jedem Blatt wieder neu zuweisen zu müssen...
Liebe Grüße
Kerstin
Anzeige
AW: Mit VBA Seitengröße einstellen
24.04.2019 12:49:42
Oberschlumpf
Hi Kerstin,
a) beschreib mal bitte Schritt für Schritt deine "per Hand"-Lösung
ich weiß nicht, was genau du mit PDF-Seitengröße einstellen du meinst
b) zeig mal bitte den aufgezeichneten Code
Vielleicht kann man den ja im Nachhinein anpassen.
Zumal du ja auch erwähnst, dass jede Seite anders eingestellt werden muss. Da muss der Code dann ja mehrmals gestartet werden, was mit fixen Einstellparametern ja auch nicht funktionieren würde.
Ciao
Thorsten
Anzeige
AW: Mit VBA Seitengröße einstellen
26.04.2019 11:10:42
Kerstin
Hi Thorsten,
zu a): Ich habe per VBA für jedes Tabellenblatt einen anderen Druckbereich definiert. Das klappt auch...
Dann muß ich aber jedes Tabellenblatt einzeln öffnen, Unter "Layout" - Seite einrichten - Größe - Seite einrichten - Papierformat -Optionen - Papierformat, dann mein definiertes Papierformat heraussuchen, ok - ok FERTIG. und DAS FÜR JEDES TABELLENBLATT!!!!
Anschließend werden die Tabellenblätter einzeln (Nur der Druckbereich im jeweiligen Papierformat) als PDF gespeichert. Und dann irgendwann gedruckt. Die "Druckeinstellungen bleiben bis zum Schließen der Tabelle erhalten. Beim erneuten öffnen muss ich wieder alles neu eingeben.
Der Umweg über PDF deshalb, damit ich die entstandenen Dateien im Büro ausdrucken kann, (Schont meinen Drucker und meine Farbe ;)) der dortige Rechner hat Linux und Libre Office, da laufen meine Tabellen nicht.
zu b) an einer Stelle im Code steht: .PaperSize = xlPaperA4 das kann man aber leider nicht ändern. Oder doch? Ich hab's nicht hinbekommen, weder mit dem "Namen" des definierten Papierformats, noch mit Größenangaben (mm hoch, mm breit).
Hier ist der gesamte aufgezeichnete Code:
Sub Papierformat()
' Papierformat Makro
With ActiveSheet.PageSetup
.PrintTitleRows = ""
.PrintTitleColumns = ""
End With
ActiveSheet.PageSetup.PrintArea = ""
With ActiveSheet.PageSetup
.LeftHeader = ""
.CenterHeader = ""
.RightHeader = ""
.LeftFooter = ""
.CenterFooter = ""
.RightFooter = ""
.LeftMargin = Application.InchesToPoints(0.75)
.RightMargin = Application.InchesToPoints(0.75)
.TopMargin = Application.InchesToPoints(1)
.BottomMargin = Application.InchesToPoints(1)
.HeaderMargin = Application.InchesToPoints(0.5)
.FooterMargin = Application.InchesToPoints(0.5)
.PrintHeadings = False
.PrintGridlines = False
.PrintComments = xlPrintNoComments
.PrintQuality = -4
.CenterHorizontally = False
.CenterVertically = False
.Orientation = xlPortrait
.Draft = False
.PaperSize = xlPaperA4
.FirstPageNumber = xlAutomatic
.Order = xlDownThenOver
.BlackAndWhite = False
.zoom = 100
End With
End Sub
Ich sage schon mal lieben dank für Deine Mühe! Hoffentlich findest Du etwas, was mir weiterhilft...
Ach, ich sollte vielleicht noch erwähnen, daß ich Excel 2011 (Mac-Version :((( ) benutze. Da klappt ganz vieles nicht, was auf Windows Rechnern läuft.
Liebe Grüße
Kerstin
Anzeige
AW: Mit VBA Seitengröße einstellen
27.04.2019 07:50:38
Oberschlumpf
Hi Kerstin,
danke für deine Beschreibung(en).
Aber leider kann ich auch nicht helfen.
Ciao
Thorsten
AW: Mit VBA Seitengröße einstellen
27.04.2019 09:14:08
fcs
Hallo Kerstin,
gundsätzlich funktioniert es per VBA auch von A4 verschiedene Papiergrößen per Makro festzulegen.
Die Werte sind dann oft reine Zahlen. z.B.
        .PaperSize = 189 '10 x 15 cm

Dies ist aber von den Möglichkeiten des jeweils aktiven Druckers abhängig.
Wenn möglich, dann solltest du den Druckertreiber des Druckers mit dem du im Büro die PDFs drucken willst auf deinem Heimrechner installieren.
Keine Ahnung ob das so einfach möglich ist.
Auf deinem Heimrechner musst du dann in Excel immer erst diesen Drucker zum aktiven Drucker machen, bevor du die Datei öffnest.
Dann sollten auch deine Sonderformate erhalten bleiben.
Auf jeden Fall sollte es funktionieren per Makro den passenden Drucker zu wählen, die Formate der einzelnen Tabellenblätter per Makro anzupassen und dann per Makro die Blätter als PDF-Datei zu speichern.
Um den Wert für die Papersize zu bekommen musst du per Makrorekorder das Ändern der Seiteneinstellungen aufzeichnen.
LG
Franz
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Seitenformate in Excel mit VBA einstellen


Schritt-für-Schritt-Anleitung

Um die Blattgröße in Excel mithilfe von VBA zu ändern und verschiedenen Tabellenblättern unterschiedliche Seitenformate zuzuweisen, folge diesen Schritten:

  1. Makro-Recorder: Starte den Makro-Recorder in Excel, um die nötigen Befehle aufzuzeichnen. Achte darauf, dass das gewünschte Seitenformat bereits eingestellt ist.

  2. VBA Code anpassen: Erstelle ein neues VBA-Modul und füge den folgenden Code ein, um das Papierformat anzupassen:

    Sub Papierformat()
       With ActiveSheet.PageSetup
           .PaperSize = xlPaperA4 ' Hier kannst du xlPaperA4 durch dein benutzerdefiniertes Papierformat ersetzen
           .Orientation = xlPortrait
           .LeftMargin = Application.InchesToPoints(0.75)
           .RightMargin = Application.InchesToPoints(0.75)
           .TopMargin = Application.InchesToPoints(1)
           .BottomMargin = Application.InchesToPoints(1)
           .Zoom = 100
       End With
    End Sub
  3. Seitenformat festlegen: Ändere den Wert von .PaperSize, um das gewünschte Papierformat einzustellen. Du kannst benutzerdefinierte Papiergrößen definieren, indem du die entsprechenden Werte für die Papersize in Millimeter oder Zoll angibst.

  4. Makro ausführen: Führe das Makro für jedes Tabellenblatt aus, um die Formate zu übernehmen. Du kannst auch eine Schleife einfügen, um mehrere Blätter gleichzeitig zu bearbeiten.


Häufige Fehler und Lösungen

  • Fehler: Ränder passen nicht auf die Seitengröße
    Wenn die Ränder nicht auf die Seitengröße passen, überprüfe die Margen im PageSetup. Setze sie auf Standardwerte zurück und teste erneut.

  • Problem mit dem Makro-Recorder
    Der Makro-Recorder kann nicht alle Befehle aufzeichnen. Wenn dein benutzerdefiniertes Papierformat nicht aufgezeichnet wird, schreibe die VBA-Befehle manuell.


Alternative Methoden

  1. Excel PDF Export Seitengröße anpassen: Du kannst die Seitengröße auch beim Exportieren als PDF anpassen. Wähle „Datei“ > „Speichern unter“ und wähle das PDF-Format. Hier kannst du die Optionen für die PDF-Seitengröße anpassen.

  2. LibreOffice Calc: Wenn du mit LibreOffice arbeitest, kannst du den Druckbereich festlegen, um die Druckeinstellungen für verschiedene Tabellenblätter zu steuern.


Praktische Beispiele

  • Beispiel für benutzerdefiniertes Papierformat:

    With ActiveSheet.PageSetup
       .PaperSize = 189 ' 10 x 15 cm
    End With
  • Alle Blätter in einem Rutsch anpassen:

    Sub AlleBlätterAnpassen()
       Dim ws As Worksheet
       For Each ws In ThisWorkbook.Worksheets
           ws.PageSetup.PaperSize = xlPaperA4 ' Oder dein benutzerdefiniertes Format
       Next ws
    End Sub

Tipps für Profis

  • Installiere den Druckertreiber deines Bürodruckers auf deinem Heimrechner, um sicherzustellen, dass alle benutzerdefinierten Formate auch korrekt angezeigt werden.
  • Nutze die VBA-Befehle Übersicht als Referenz, um schnell die richtigen Funktionen zu finden.
  • Experimentiere mit verschiedenen Seitenformaten, um herauszufinden, welches am besten für deine Anforderungen geeignet ist.

FAQ: Häufige Fragen

1. Wie kann ich die Blattgröße in Excel ändern?
Du kannst die Blattgröße in den "Seite einrichten"-Einstellungen unter dem Tab "Layout" anpassen oder dies per VBA im Code festlegen.

2. Was ist der Unterschied zwischen Seitenformat und Papierformat?
Das Seitenformat bezieht sich auf die Größe des Druckbereichs, während das Papierformat die physische Größe des Papiers beschreibt, auf dem gedruckt wird.

3. Kann ich mehrere Excel-Dateien gleichzeitig öffnen?
Ja, du kannst die gleiche Excel-Datei zweimal öffnen, indem du eine Kopie der Datei erstellst oder Excel in einer neuen Instanz startest.

4. Wo finde ich eine Übersicht über Excel VBA-Befehle?
Du kannst eine Übersicht über Excel VBA-Befehle im Internet suchen oder in der Excel-Hilfe nach "VBA-Befehle Übersicht PDF" suchen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige