Makro: Seite einrichten und Drucken

Hallo Excelexperten,
ich versuche unter Anderem folgendes in einem Makro zu realisieren:
Es soll das Fenster „Seite einrichten“ geöffnet werden, es soll eine Benutzereingabe abgewartet werden und anschliessend gedruckt werden.

sub 1
Sendkey “%(di)”
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
end sub

Leider wird so die Eingabe des Nutzers im Menü „Seite einrichten“ nicht berücksichtigt, sondern sofort gedruckt. Wie kann man erreichen, dass erst abgewartet wird bis der Nutzer „Okay“ geklickt hat und die Änderungen im Druck berücksichtigt werden?

Vielen Dank für eure Antworten

Ingo

Hallo Ingo.

Es soll das Fenster „Seite einrichten“ geöffnet werden, es
soll eine Benutzereingabe abgewartet werden und anschliessend
gedruckt werden.

So, wie Du es beschrieben hast, könntest Du eine Inputbox verwenden:

> sub 1

Dim Eingabe As String


> Sendkey “%(di)”

Eingabe = InputBox("Bitte geben Sie den erforderlichen Wert ein")
If Eingabe = "" Then Exit Sub
 'Weiterer Code


> ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True  
> end sub

Trotzdem glaube ich, daß Du etwas anderes suchst.

Viele Grüße
Carsten

Hi Ingo,

Es soll das Fenster „Seite einrichten“ geöffnet werden, es
soll eine Benutzereingabe abgewartet werden und anschliessend
gedruckt werden.

sub 1
Sendkey “%(di)”
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
end sub

sub 1 ? Kopiere bitte funktionierenden Code rein, nicht selbst reinschreiben, verwirrt nur.

Leider wird so die Eingabe des Nutzers im Menü „Seite
einrichten“ nicht berücksichtigt, sondern sofort gedruckt. Wie
kann man erreichen, dass erst abgewartet wird bis der Nutzer
„Okay“ geklickt hat und die Änderungen im Druck berücksichtigt
werden?

Laß die PrintOut Zeile weg, dann kann man ja im Menu auf „Drucken“ klicken.

Zumindest bei meinem XL2000.

Gruß
Reinhard

Warten auf Nutzereingabe
Hallo Carsten, Hallo Reinhard,
zunächst einmal vielen Dank für die Antworten!

So, wie Du es beschrieben hast, könntest Du eine Inputbox
verwenden

Ich war davon ausgegangen, dass sich das Seite einrichten Menü genau wie eine Inputbox verhält und das Makro erst weitermacht wenn mit „Okay“ das Menü geschlossen wird.
Ist es möglich das Weiterlaufen des Makros von diesem Ereignis abhängig zu machen?

@ Reinhard: Es stimmt durchaus, dass man den print Befehl auch einfach weglassen könnte. Aber unabhängig davon, ob in diesem Falle nur eine marginale Zeitersparnis realisiert wird, ist es doch eine interessante Fragestellung. Ich könnte mir vorstellen, dass es nicht unüblich ist innerhalb von Makros Excel-Menü-Funktionen aufzurufen und auf eine Nutzereingabe zu warten. Würde gerne herausfinden, wie sowas funktioniert.

Application.Wait (Jetzt + TimeValue(„0:00:10“))
Das wäre wohl zumindest eine Möglichkeit dem Nutzer etwas Zeit zu geben für die Eingabe. Oder wartet das Programm und gibt Excel nur Zeit um zu rechnen? Ich werde das gleich mal ausprobieren!

Wie immer bin ich für Vorschläge dankbar.

Beste Grüße,

Ingo

Hi Ingo,

Ich war davon ausgegangen, dass sich das Seite einrichten Menü
genau wie eine Inputbox verhält und das Makro erst weitermacht
wenn mit „Okay“ das Menü geschlossen wird.
Ist es möglich das Weiterlaufen des Makros von diesem Ereignis
abhängig zu machen?

das gibt Excel vor bei welchen Fensterchen es weiterläuft, bei welchen es anhält mit dem Makro bis das Fensterchen wieder geschlossen wurde.

Vielleicht hilft ja dies weiter:

Sub tt()
Application.Dialogs(xlDialogPageSetup).Show
End Sub

Laut Hilfe hat xlDialogPageSetup folgende Parameter:

xlDialogPageSetup head, foot, left, right, top, bot, hdng, grid, h_cntr, v_cntr, orient, paper_size, scale, pg_num, pg_order, bw_cells, quality, head_margin, foot_margin, notes, draft

xlDialogPageSetup head, foot, left, right, top, bot, size, h_cntr, v_cntr, orient, paper_size, scale, pg_num, bw_chart, quality, head_margin, foot_margin, draft

xlDialogPageSetup head, foot, left, right, top, bot, orient, paper_size, scale, quality, head_margin, foot_margin, pg_num

aber ich habe vergessen wie man die vor Aufruf festlegen kann oder nach Beendigung auswerten kann. Kann auch sein daß es überhaupt nicht geht, ist lange her daß ich das probierte herauszufinden.

Aber über Pagesetup kommt man ja dran, siehe Modul1 die Benutzung von Pagestup.

Wenn nicht, bastle dir ein eigenes Fensterchen (Userform) wie hier als kleines beispiel:

http://www.hostarea.de/server-09/September-8dcb423f8…

In Modul1 siehst du ja was du alles in einer Seite einrichten kannst, das was du davon brauchst mußt du in deine UF einbauen, so wie ich es mit Hoch/Querformatauswahl tat. In der Werkzeugsammlung siehst du ja was du alles in die UF einbauen kannst.

@ Reinhard: Es stimmt durchaus, dass man den print Befehl auch
einfach weglassen könnte. Aber unabhängig davon, ob in diesem
Falle nur eine marginale Zeitersparnis realisiert wird,

Wieso das, es wird nur gedruckt wenn man auf Drucken klickt, was hat das mit Zeitersparnis zu tun ?

ist es
doch eine interessante Fragestellung. Ich könnte mir
vorstellen, dass es nicht unüblich ist innerhalb von Makros
Excel-Menü-Funktionen aufzurufen und auf eine Nutzereingabe zu
warten.

Ja, aber die Eingaben in ein Fensterchen kann man nur dann auswerten wenn das vorgesehen ist wie bei Inputbox o.ä. und der Code in der Zeit wartet.
Mittels APi kann man schon eine Warteschleife basteln die solange wartet bis das Fensterchen geschlossen wurde oder z.B. sowas wie eine Msgbox für exakt 5 Sekunden anzeigt dann wieder löscht, was man mit normalem Vba nicht schafft.

Gruß
Reinhard