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?
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
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?