Bestimmte Tabellenblätter drucken

Hallo liebe Excel-Experten,

wiedermal habe ich ein Problem, dass sich mir als Excel und VBA-Anfänger Probleme bereitet:

Ich habe eine Excelmappe mit mehreren Excelblättern. Beim klick auf einen „Drucken“-Button öffnet sich eine Userform mit einigen Comboboxen, die die schon die Namen der einzelnen Tabellenblätter beinhalten. Jetzt kann ich auswählen welche Blätter ich in welcher Reihenfolge drucken möchte, indem ich sie bei den Comboboxen selektiere.

In der Userform ist jetzt ein Button, der drucken heißt. Was sollte da korrekterweiße stehen, damit die selektierten Seiten gedruckt werden?

Wird das dann an den Windows-Druck-Dialog übergeben, oder wird direkt an den drucken gesendet?
Eine Seite davon wäre im Querformat…

Oder kann man auch eine Combobox zusätzlich erstellen in denen alle verfügbaren Drucker angezeigt werden?

Für Hilfe wäre ich äußerst dankbar!

Grüße,
Tom

Hallo Tom85.

Ich habe eine Excelmappe mit mehreren Excelblättern. Beim
klick auf einen „Drucken“-Button öffnet sich eine Userform mit
einigen Comboboxen, die die schon die Namen der einzelnen
Tabellenblätter beinhalten. Jetzt kann ich auswählen welche
Blätter ich in welcher Reihenfolge drucken möchte, indem ich
sie bei den Comboboxen selektiere.

In der Userform ist jetzt ein Button, der drucken heißt. Was
sollte da korrekterweiße stehen, damit die selektierten Seiten
gedruckt werden?

Um einen grundsätzlichen Code zu erstellen, solltest Du ein Makro aufzeichnen, in dem Du alle Schritte durchgehst, die zum Ausdrucken einer Seite notwendig sind.
Wenn Du den Drucker im Drucken-Dialog ausgewählt hast, auf Abbrechen klicken. Dann die Seite einrichten und danach die Aufzeichnung erstmal beenden.
Schau Dir den Code an und passe ihn an. Wenn Du das für alle Tabellenblätter gemacht hast, kannst Du die Makros nacheinander aufrufen.

Wenn Deine Tabellenblätter keinen dynamischen Druckbereich haben und die Seiteneinrichtung für jedes Tabellenblatt schon festgelegt sind, kannst Du eigentlich mit einer ForNext-Schleife Deine ComboBox durchlaufen und prizipiell so vorgehen (Achtung: Syntax ist bestimmt nicht korrekt):

For a = LBound(ComboBox1.List()) to Ubound(ComboBox1.List())
 If ComboBox1.List(a).Selected = True then
 Worksheets(ComboBox1.List(a).Text).PrintOut
 End If
Next

Vielleicht hilft das ja schon weiter

VG
Carsten

Danke, deinen Tip werde ich mal ausprobieren und sehen wie ich damit zurecht komme…

Hallo Tom,

In der Userform ist jetzt ein Button, der drucken heißt. Was
sollte da korrekterweiße stehen, damit die selektierten Seiten
gedruckt werden?

? Benenne ihn wie du willst.

Wird das dann an den Windows-Druck-Dialog übergeben, oder wird
direkt an den drucken gesendet?

Sicher nicht direkt, das müßte man anders machen. Es wird über den Druckertreiber laufen und da wird Windows beteiligt sein *mutmaß*

Eine Seite davon wäre im Querformat…

Ja und?

Oder kann man auch eine Combobox zusätzlich erstellen in denen
alle verfügbaren Drucker angezeigt werden?

Ja.

Was genau willst du eigentlich tun, mir ist da einiges unklar an deiner Anfrage.

Gruß
Reinhard

Hallo Reinhard,

also, ich versuche mich nochmal genauer auszudrücken.

In einer Userform mit verschiedenen Comboboxen wähle ich die Tabellenblätter aus, die direkt an den Drucker gesendet werden sollen. Damit ich nicht einzeln die Tabellenblätter aufrufen muss und dann über „Datei --> Drucken“ gehen muss um z.B. 4 der 10 Tabellenblätter auszudrucken.

Das mit der Druckerauswahl habe ich bereits geschaft. In einer Combobox stehen die auf dem System installierten und verfügbaren Drucker drin, auf denen ich dann drucken kann:

On Error Resume Next
 Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
 Set colItems = objWMIService.ExecQuery("Select \* from Win32\_Printer", , 48)
 For Each objItem In colItems
 ComboBoxDrucker.AddItem objItem.Caption
Next

Das mit dem Querformat habe ich auch bereits gelöst,
das funktioniert folgendermaßen:

With 
 Sheets(UserFormDrucken.ComboBox1.SelText).PageSetup.Orientation = xlLandscape
End With

Jetzt noch folgendes Problem
Ich würde gerne die Fächer des Druckers ansteuern können und die Druckerspeziefische Qualität, also „Entwurfsmodus“, „Normal“, oder „Hoch“ bestimmen können… ist das möglich?

Grüßle,
Tom