Seitenlayout und Seitenumbrüche einer Exceldatei anpassen

  • VBScript

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von MuHaddi.

    Seitenlayout und Seitenumbrüche einer Exceldatei anpassen

    Guten Tag,

    ich habe ein funktionierendes vb-Script, welches folgendes tut:

    1. Excel öffnen
    2. Eine Verbindung zu einer MS SQL Datenbank aufbauen und per SQL-Befehle Abfragen durchführen
    3. Die abgefragten Daten verdichten und in Excel darstellen

    Das funktioniert auch soweit problemlos. Nur möchte ich, dass noch im Seitenlayout die Ausrichtung auf "Querformat" gesetzt wird und die Seitenumbrüche entsprechend verschoben werden, damit man dieses vor dem Drucken nicht mehr von Hand machen muss.
    Ich hab, clevererweise so dachte ich, die Schritte in Excel ausgeführt und mit dem Makrorekorder aufgezeichnet und den VBA Code dann in mein VB Script kopiert und dort vor die Methoden mein Objekt gesetzt, leider erfolglos.

    Kann mit jemand die Methoden für vbs nennen ?

    Beste Grüße und vielen Dank,
    MuHaddi
    So, den ersten Teil der Aufgabe (Excel ins Querformat bringen) konnte ich nun selber lösen:

    Dim XL
    Const xlLandscape = 2
    Set XL = CreateObject("Excel.Application")
    XL.Workbooks.Add
    XL.Visible = 1 'Excel sichtbar oder nicht sichtbar
    XL.ActiveSheet.PageSetup.Orientation = xlLandscape
    XL.ActiveSheet.Cells(10,3).value = "This is a test"

    Der entscheidende Befehl lautet: XL.ActiveSheet.PageSetup.Orientation = xlLandscape

    Nun muss ich noch das mit den Umbrüchen fürs Drucken hinbekommen.

    Grüße
    MuHaddi
    Moin Moin,

    hat denn tatsächlich niemand eine Idee ? :(

    Hatte folgende Ansätze, leider erfolglos:

    'xlo.ActiveSheet.PageSetup.FitToPagesWide = 1
    'xlo.ActiveSheet.PageSetup.FitToPagesTall = 1

    oder so in der Art:

    'xlo.ActiveSheet.HPageBreaks = ("A50")
    'xlo.ActiveSheet.VPageBreaks = ("A50")

    Hiermit auch etwas rumprobiert:

    'xlo.ActiveSheet.ResetAllPageBreaks
    'xlo.ActiveSheet.Zoom = False
    'Set ActiveSheet.HPageBreaks(1).Location = Range("A37")

    Viele Grüße
    MuHaddi
    Hallo Drahuverar,

    danke für den Hinweis, werde ich in zukunft berücksichtigen.

    Hier nochmal eine genauere Beschreibung der Anforderung:
    Ich habe ein vb script, welches Daten aus einer SQL-Datenbank zieht, Excel öffnet und dort eine Tabelle erstellt.
    Möchte man nun diese Tabelle drucken, muss man manuell in Excel jedesmal die Seitenumbrüche anpassen, damit die Tabelle auf einer Seite ausgedruckt werden kann. Das anpassen der Seitenumbrüche möchte ich gerne ebenfalls vom vb-script vornehmen lassen.

    Entweder mit einem Befehl, der da sagt, bitte passe die Seitenumbrüche so an, dass der Inhalt des Tabellenblattes auf eine Seite passt. Wenn das nicht geht, könnte ich die Seitenumbrüche auf fest definieren, da die Tabelle immer die selbe Größe hat und haben wird, also z.B.

    Seitenumbruch 1 ist in der vertikalen immer bei Spalte K
    Seitenumbruch 1 ist in der horizontalen immer bei Feld 30

    Ich hoffe, es einigermaßen verständlich erklärt zu haben :)

    Grüße
    MuHaddi

    MuHaddi schrieb:

    dass der Inhalt des Tabellenblattes auf eine Seite passt

    Quellcode

    1. XL.Workbooks.Add
    2. Set ws=XL.ActiveSheet
    3. ws.PageSetup.FitToPagesWide = 1
    4. ws.PageSetup.FitToPagesTall = 1
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „petaod“ ()

    Moin Moin,

    das

    XL.Workbooks.Add
    Set ws=XL.ActiveSheet
    ws.PageSetup.FitToPagesWide = 1
    ws.PageSetup.FitToPagesTall = 1


    funktioniert nun, allerdings nur mit dem Zusatz:

    xls.PageSetup.Zoom = False

    Sieht jetzt also so aus:

    Set xls =xlo.ActiveSheet
    xls.PageSetup.Zoom = False 'Passt die Skalierung für eine Seite an
    xls.PageSetup.FitToPagesWide = 1
    xls.PageSetup.FitToPagesTall = 1

    Damit ist das Thema erledigt. Vielen Dank.

    Grüße
    MuHaddi