Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1956to1960
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Userform Drucker auswählen und mit Me.Printform drucken

Userform Drucker auswählen und mit Me.Printform drucken
14.12.2023 10:18:46
StefHei
Hallo zusammen,
mein erster Beitrag, ich hoffe ich finde die richtigen Worte :-)
Mein Problem:
Ich habe ein Userform angelegt, welche auch gut funktioniert.

Habe auch einen CommandButton1 zum Ausdrucken der Userform Ansicht mit der PrintForm-Methode, welchen den durch die Systemsteuerung des Betriebssystems vorgegebenen Drucker nutzt.
Private Sub CommandButton1_Click()
Me.PrintForm
End Sub

Mein Problem ist folgendes (ich denke dies ist nicht neu):
Ich möchte gerne mit einem weiterem Commandbutton (2) einen Drucker aussuchen und danach mit der PrintFormMethode (entweder über den gleiche Button 2 oder den Button 1) die Userform Ansicht ausdrucken (alles Netzwerkdrucker oder PDF Drucker), um diese beispielsweise als PDF abspeichern zu können. Wolle hier nicht die Screenshot-Methode anwenden.

Ich habe vieles ausprobiert, als einziges hat bei mir bisher folgendes funktioniert:

Private Sub CommandButton2_Click()
Dim strPrinterName As String
strPrinterName = Application.ActivePrinter
Application.Dialogs(xlDialogPrinterSetup).Show
' Hier den PrintOut befehl
ActiveSheet.PrintOut
Application.ActivePrinter = strPrinterName
End Sub

Hier wird nach betätigen des Buttons2 die Druckerliste angezeigt, ich wähle einen nicht Standarddrucker aus und gehe dann auf Drucken. Hier wird dann das Excelblatt (Activesheet) als Printout ausgedruckt. Oder anstatt drucken betätige ich Abbrechen.
Bei beiden Anwendung (drucken/abbrechen) bleibt irgendwie der ausgewählte Drucker gespeichert und ich kann dann mit Button 1 mit dem zuvor ausgewählten Drucker in der Printform die Userform Ansicht (und nicht das Excelsheet) ausdrucken.

Da auch andere damit arbeiten sollen, ist dies leider nicht sehr anwenderfreundlich und auch schwierig zu erläutern (siehe oben).

Gibt es hierzu evtl. eine andere Möglichkeit? Z.B. dass bei Auswahl des Druckers kein Druck ausgelöst, sondern nur der Drucker umgestellt wird?! Erst mit Button 1 der Druck ausgelöst werden kann. Oder gibt es noch etwas anderes.

Danke Euch.

Folgende Beiträge habe ich hierzu gefunden:
https://www.herber.de/forum/archiv/1720to1724/1722345_Userform_Fenster_drucken.html
https://www.herber.de/forum/archiv/680to684/680384_Druckerauswahl_anzeigen.html

In anderen Foren (ich hoffe die darf ich hier nennen):
https://www.online-excel.de/excel/singsel_vba.php?f=126
Unter: https://www.using-excel.de/excelvba.html# war ein Beitrag unter Userform als pdf-drucken v2.
Dies funktioniert leider auch nicht:

Private Sub CommandButton2_Click()
Dim ausw As Variant
Dim newPrinter As String

strOldPrinter = Application.activePrinter
strOldPrinter = Mid(strOldPrinter, 1, InStr(1, strOldPrinter, " auf") - 1)

ausw = Application.Dialogs(xlDialogPrinterSetup).Show
ausw = Application.activePrinter

Me.PrintForm
Unload MeinFormular

CreateObject("WScript.Network").setdefaultprinter strOldPrinter

End Sub

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Userform Drucker auswählen und mit Me.Printform drucken
14.12.2023 16:00:37
StefHei
Hallo Uwe,

Vielen lieben Dank. Ich habe dein Beispiel eingearbeitet und die Drucker werden alle erkannt, der Druck kann auch ausgelöst werden. Jedoch wird egal welchen Drucker (PDF Drucker etc.) nur der Standarddrucker angesprochen.
Hast Du evtl. noch eine Idee. Gleiches auch mit Deinem Beispiel.
Grüße Stefan
AW: Userform Drucker auswählen und mit Me.Printform drucken
14.12.2023 17:49:47
Alwin Weisangler
Hallo Stefan,

Sorry, ich hätte es mal testen sollen. Da muss der Standartdrucker in Win umgestellt werden.
tausche den alten Code gegen diesen komplett aus.


Option Explicit
Dim WshNetwork
Dim alterPrinter

Private Sub Cmd_UfDrucken_Click()
Set WshNetwork = CreateObject("WScript.Network")
WshNetwork.SetDefaultPrinter Cbo_Druckertreiber.Text
AusdruckUF
End Sub

Sub AusdruckUF()
Me.PrintForm
Cbo_Druckertreiber = alterPrinter
WshNetwork.SetDefaultPrinter alterPrinter
End Sub

Private Sub UserForm_Activate()
Dim objWMI As Object, objWMIStandart As Object, colPrinters As Object, objPrinter As Object, objItem As Object
Set objWMI = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & "." & "\root\cimv2")
Set objWMIStandart = GetObject("winmgmts:\\.\root\cimv2").ExecQuery("Select * from Win32_Printer where Default = 'true'")
Set colPrinters = objWMI.ExecQuery("Select * from Win32_PrinterConfiguration")

Cbo_Druckertreiber = "Bitte warten bis Standartdrucker erscheint"
For Each objPrinter In colPrinters
'Entfernt unnötige Drucker und läd den Rest
If objPrinter.Name > "Fax" And objPrinter.Name > "PDF24" And objPrinter.Name > "PDF24 Fax" And objPrinter.Name > "SEC842519598F35" And objPrinter.Name > "PDFCreator" And objPrinter.Name > ".......usw." Then
Me.Cbo_Druckertreiber.AddItem objPrinter.Name
End If
'Enfernung beendet
Next objPrinter
' Eintrag Standartdrucker in Combobox
For Each objItem In objWMIStandart
Cbo_Druckertreiber = objItem.properties_.Item("Name").Value
alterPrinter = Cbo_Druckertreiber
Next
Set objWMI = Nothing
Set objWMIStandart = Nothing
End Sub

https://www.herber.de/bbs/user/165201.xlsm

Gruß Uwe

Anzeige
AW: Userform Drucker auswählen und mit Me.Printform drucken
15.12.2023 15:29:04
StefHei
Hallo Uwe,

nun funktioniert es. Vielen Dank.

Grüße

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige