Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: Ken am März 07, 2013, 14:47:00

Titel: Druckbereich via VBA definieren
Beitrag von: Ken am März 07, 2013, 14:47:00
Nochmal Hallo,

kann sein, dass ich besser im Excelbereich aufgehoben wäre, aber der Code ist VBA deshalb versuche ich es hier.
Ich habe ein Excelblatt was ich über VBA in Access steuere und dieses Blatt soll auf zwei Blätter verteilt ausgedruckt werden.
Den Code dafür habe ich auch schon, ich weiß nur nicht wie ich genau wie ich im Code darstelle ab wann (Zeile) die zweite Seite beginnt. Im Moment druckt er bis Blattende und macht den Rest auf der nächsten Seite.
Vielleicht hat jemand eine Idee wo genau ich da eingreifen muss.

With ActiveSheet.PageSetup
      .Orientation = xlLandscape
      .PrintTitleRows = "$1:$7"
      .FitToPagesWide = 2
      .FitToPagesTall = 2
      .Zoom = 25
      .CenterVertically = True
   End With


Vielen Dank!
Titel: Re: Druckbereich via VBA definieren
Beitrag von: database am März 07, 2013, 17:03:16
Hallo,

Versuch mal so:
Die Spalten und Zeilenangabe musst du nach deinen Gegebenheiten ändern.


With ActiveSheet.PageSetup
      .Orientation = xlLandscape
      .PrintTitleRows = "$1:$7"
      .FitToPagesWide = 2
      .FitToPagesTall = 2
      .Zoom = 25
      .CenterVertically = True
      .PrintArea = "$A$1:$D$25, $A$27:$D$52
   End With


Du musst beim Anlegen des Druckbereichs beachten, dass zwischen den einzelnen Seiten eine Zeile Abstand eingehalten wird,

.PrintArea = "$A$1:$D$25, $A$27:$D$52

sonst wird nicht zwischen 2 Seiten unterschieden und du hast den gleichen Effekt wie bisher.

HTH
Titel: Re: Druckbereich via VBA definieren
Beitrag von: Ken am März 07, 2013, 18:26:01
You are my hero  ;)

Funktioniert wie gewünscht. Was noch nicht so wirklich stimmt ist, dass die Seite nicht komplett ausgefüllt wird (rechts sind noch so 5 cm Rand). Aber da lese ich mich erst mal durch bevor ich hier wieder um Hilfe schreie.

Vielen Dank HTH
Titel: Re: Druckbereich via VBA definieren
Beitrag von: database am März 07, 2013, 21:12:52
Hallo,

schön dass es geklappt hat!

Übrigens ...  ich heiße nicht und nenne mich auch nicht HTH, das ist ein Akronym ... steht für 'Hope That Helps' (Hoffe das hilft)  ::) ;)
Bitte den Thread auf gelöst setzten - DANKE
Titel: Re: Druckbereich via VBA definieren
Beitrag von: C4RL0 am März 08, 2013, 08:46:46
Zitat von: Ken am März 07, 2013, 18:26:01
...Was noch nicht so wirklich stimmt ist, dass die Seite nicht komplett ausgefüllt wird (rechts sind noch so 5 cm Rand)...

Spiel mal mit folgenden Eigenschaften (insbesondere der ersten):

        .FitToPagesWide = 1
        .FitToPagesTall = 1


wenn das nicht reicht, könntest du das Ergebnis auch noch zentrieren um den Rand wenigstens zu verteilen:

        .CenterHorizontally = True
        .CenterVertically = True
Titel: Re: Druckbereich via VBA definieren
Beitrag von: Ken am März 08, 2013, 09:22:05
@Database
Gut das du nicht MfG geschrieben hast  ;) Gelöst hatte ich gestern schon aktiviert.

@Carlo,
Danke für den Tipp, probiere ich gleich mal aus!
Titel: Re: Druckbereich via VBA definieren
Beitrag von: Ken am März 08, 2013, 14:52:04
Hallo Carlo,

die vier Zeilen bewirken leider nicht viel, der Druck ist im Moment genau in der Mitte zentriet, also ca. 3cm oben, unten, rechts wie links noch frei  ??? Obwohl ich die Seitenränder schon auf null gesetzt habe....seltsam, oder?
Titel: Re: Druckbereich via VBA definieren
Beitrag von: database am März 09, 2013, 10:06:04
Hallo,

die Einstellungen ...

        .FitToPagesWide = 1
        .FitToPagesTall = 1

... bewirken, dass das Tabellenblat oder besser der Druckbereich auf 1 Seitenlänge und 1 Seitenbreite angepaßt wird.

Wenn nun die Länge oder die Breite oder beide, des zu druckenden Bereichs die Grenzen des Druckers oder des eingestellten Papierformats übersteigen
kann die Anpassung nicht erfolgen, da sonst entweder das Blatt nicht in seiner ganzen Länge oder in seiner ganzen Breite am Ausdruck erscheinen würde.

Du kannst das überprüfen indem du den Einstellungsdialog aus dem Menü oder dem Ribbon aufrufst und hier die Einstellungen veränderst.
Du kannst auch versuchen die Zeilenhöhe oder die Spaltenbreite am Arbeitsblatt zu verändern und danach die Druckvorschau bemühen.

Wie sich die Einstellungen auf deinen Code auswirken kannst du am Leichtesten feststellen,
wenn du wärend der Anpassung der Seite über den Einstellungsdialog (Seite einrichtien) eine Makroaufzeichnung laufen läßt.


Titel: Re: Druckbereich via VBA definieren
Beitrag von: Ken am März 09, 2013, 14:58:11
Hallo Database,

aber darum geht es mir doch gerade, einen Befehl zu finden der unabhängig von der Länge und Breite des Blattes - also quasi eine Fit to page Befehl - den Inhalt auf das Blatt bringt und gegebenfalls zoomt (verkleinert bzw. vergrößert). Den muss es doch geben, oder? Was soll sonst der .FitToPagesWide = 1 Befehl, wenn ich eh genau berechnen muss wie groß der Inhalt ist?
Im Moment habe ich (je nach dem wie ich  .FitToPages... und  .CenterHorizontally = True einsetze entweder einen rechten Rand von ca. 5cm, oder der Inhalt ist in der Blattmitte zentriet mit seitlichen Rändern von 3-4cm.
Titel: Re: Druckbereich via VBA definieren
Beitrag von: database am März 09, 2013, 16:51:06
Hallo,

du brauchst dazu nichts berechnen.
Die Seite wird so dagestellt, dass alle Zeilen und alle Spalten des angegebenen Druckbereichs auf eine Seite passen.

Wenn du nun manuell den Seiteneinstellungs-Dialog aufrufst und statt 100% Darstellung die 1 Seite Hoch und 1 Seite Breit eingibst,
was zeigt denn dann das ausgegraute %-Feld an? Immer noch 100%?

du kannst auch mit dem Zoom-Faktor experimentieren ...

   .Zoom = 25 etc.

Hmmm... mit VBA ist ja wirklich vieles möglich nur halt nicht immer auch genau das was man möchte oder sich vorstellt.
Du kannst damit nicht erreichen, dass die Zeilenhöhe um 5 Punkte vergrößert wird und die Spaltenbreite gleichzeitig verringert. ...
Du kannst in diesem Fall nur das per VBA erledigen lassen, was sich auch im Einstellungsdialog manuell einstellen läßt.

p.s. hast du eine Makroaufzeichnung von der Seiteneinstellung gemacht - hier siehst du dann alle Anweisungen / Eistellungen, die du treffen könntest.

...und die Angabe eines Zoom-Wertes UND FitToPage unter VBA gleichzeitig ist kontraproduktiv - stell mal .Zoom = False ein
wenn du FitToPage verwendest
Titel: Re: Druckbereich via VBA definieren
Beitrag von: Ken am März 09, 2013, 18:32:44
Hallo,

ich geb's auf...
Wenn ich .zoom auf false setze bekomme ich 8 Ausdrucke obwohl ich
  .FitToPagesWide = 2
  .FitToPagesTall = 2
gesetzt habe. Ich bin jetzt schon Wochen an diesem Problem und auch manuel lässt sich dieses Problem nicht lösen, Seitenränder sind auf 0, zoom auf 25% und trotzdem funktioniert es nicht.
Habe übrigens diesen Betrag auf gelöst gesetzt, wird aber immer noch nicht angezeigt  ???
Liegt am Ende doch alles an mir? :-)
Titel: Re: Druckbereich via VBA definieren
Beitrag von: database am März 10, 2013, 12:16:12
Na, na,

Selbsgeißelung führ in den Fall auch nicht zur Lösung  ::)

Du hast in der Antwort #2 geschreiben:

Zitat...Was noch nicht so wirklich stimmt ist, dass die Seite nicht komplett ausgefüllt wird (rechts sind noch so 5 cm Rand).

Lass die Einstellungen so, wie du sie beim Verfassen dieser Anwort hattest und erhöhe die Spaltenbreite des Tabellenblattes im Druckbereich ein wenig.
Wenn die Seitenlänge gepasst hat, sollte diese Maßnahme den Ausdruck bis zum eingestellten rechten Rand befüllen können.

Du siehst das, in dem du auf dem Tabellenblatt die Ansicht Seitenlayout auswählst (zumindest bei XL2012)
und stelle FitToPageWide und FitToPageTall auf 1 um anzugeben, dass der ganze Ausdruck auf eine Seite passen soll.

Wieviele Spalten enthält denn dein Blatt, wie breit sind die (alle gleich?) und wieviele Zeilen sollen pro Seite gedruckt werden (exclusive der 7 Zeilen Drucktitel) und wie hoch sind diese eingestellt?
Titel: Re: Druckbereich via VBA definieren
Beitrag von: Ken am März 10, 2013, 15:20:18
Hallo Database,

unabhängig von VBA, ich bekomme das Blatt auch nicht "per Hand" über eine komplette Seite gestreckt. Ohne Seitenränder steht der Inhalt nach links und rechts habe ich mindestens 5cm freie Fläche. Erhöhe ich die Seitenränder verschiebt sich der Inhalt dem entsprechend, aber fit to page funktioniert nicht.

Das Blatt hat 237 Zeilen und geht bis AD. Ist aber auch egal wie groß mein Blatt ist, es muss möglich sein mit einem Befehl bzw. Einstellung zu sagen füll das Blatt aus und wenn du zu groß bist dann zoom dich kleiner.
Titel: Re: Druckbereich via VBA definieren
Beitrag von: database am März 10, 2013, 16:09:53
Hallo,

Zitatunabhängig von VBA, ich bekomme das Blatt auch nicht "per Hand" über eine komplette Seite gestreckt

Dass das nicht stimmt, kannst du dir in meinen Anhängen anschauen.
Diese entstehen aus deinen Angaben 237 Zeilen und Spalten von A bis AD (Zeilenhöhe Standard 15 und Spaltenbreite habe ich auf 14 erhöht)

Zitates muss möglich sein mit einem Befehl bzw. Einstellung zu sagen füll das Blatt aus und wenn du zu groß bist dann zoom dich kleiner
Das passiert auch!
Aber keine einzige Einstellung der Druckvorschau wird eine Spaltenbreite oder eine Zeilenhöhe verändern!
Die Einstellungen, die du für die Druckansicht triffst wirken sich immer auf beide Einheiten aus.
Wird duch die Angabe eines Zoom-Faktors erreicht, dass sich alle Zeilen in ein Blatt ausgehen, wird die Breite der ANSICHT logischerweise schmäler werden
und NICHT mehr die ganze Blattbreite ausfüllen - währe ja auch ein Wahnsinn bitte - das würde ja die ganze Sache verzerren!

Stell für deine Spaltenbreiten jetzt einmal den Wert 14 ein, in der Druckvorschau 1 Breit und 1 Hoch, keine Seitenränder, keine Kopfzeile und keine Fußzeile,
zentriere Vertikal und gehe auf Druckvorschau - jetzt stellt sich dein Zoomfaktor automatisch auf 22% ein und dein Ausdruck müsste meinem Anhang ähnlich sein.



[Anhang gelöscht durch Administrator]
Titel: Re: Druckbereich via VBA definieren
Beitrag von: Ken am März 11, 2013, 07:59:47
Hallo Peter,

das bedeutet, ich muss meine Zeilenanzahl für eine Seite kürzen um einen perfekten Ausdruck zu erhalten...sehe ich das richtig?
Titel: Re: Druckbereich via VBA definieren
Beitrag von: Ken am März 11, 2013, 12:02:09
Mit dieser Einstellung:

With ActiveSheet.PageSetup
        .Orientation = xlLandscape
        .PrintTitleRows = "$1:$7"
        .FitToPagesWide = 2
        .FitToPagesTall = 2
        .Zoom = False'25
        .CenterHorizontally = True
        .CenterVertically = True
        .PrintArea = "$A$1:$ae$238, $A$240:$ae$373"
         End With


druckt er auf 8 Blätter....aber sage ich ihm nicht durch FittoPage, dass es nur 2 Blätter werden sollen?
Titel: Re: Druckbereich via VBA definieren
Beitrag von: database am März 11, 2013, 22:01:15
Hallo,

Zitataber sage ich ihm nicht durch FittoPage, dass es nur 2 Blätter werden sollen
Nein, du weist Excel damit an den angegebenen Druckbereich auf 2 Seiten Hoch und 2 Seiten Breit zu erweitern - also werden das 4 Seiten werden!
Da in deinem Code 2 Druckbereiche angegeben sind, kann ich mir vorstellen, dass da 8 Seiten rauskommen könnten.

Hast du die Spaltenbreiten mal gemäß meines letzen Posts auf 14 eingestellt?

Dann versuch mal folgendes:


With ActiveSheet.PageSetup
        .Orientation = xlLandscape
        '.PrintTitleRows = "$1:$7"
        .FitToPagesWide = 1
        .FitToPagesTall = 1
        .Zoom = 22
        .CenterHorizontally = False
        .CenterVertically = True
        .PrintArea = "$A$1:$ae$238, $A$240:$ae$373"
         End With


Ich habe in diesem Codeteil die Titelzeilen auskommentiert - versuch mal ohne, wie schaut dein Ausdruck dann in der Vorschau aus?
Kommt das meinem nahe?

Titel: Re: Druckbereich via VBA definieren
Beitrag von: Ken am März 12, 2013, 07:47:53
Hallo,

sieht genau so aus wie bei mir.

[Anhang gelöscht durch Administrator]