Hallo
Ich kann in Word mit folgendem Makro den aktiven Drucker abfragen:
Sub druckerinfo()
Dim strPr As String
strPr = ActivePrinter
MsgBox strPr
End Sub
Wie müsste das Makro im Outlook lauten, damit ich dort die Drucker-Info erhalte? - Ich arbeite mit Office Outlook 2003
Vielen dank für Eure Hilfe
Niclaus
Wie müsste das Makro im Outlook lauten, damit ich dort die
Drucker-Info erhalte? - Ich arbeite mit Office Outlook 2003
Hallo Niclaus,
scheinbar nicht so einfach.
Ich fand vba-Code der in OL läuft und alle Drucker auflistet.
Aber Code um den aktiven Drucker auszulesen, gar zu verändern fand ich nicht.
Vielleicht geht das nur über wmi, fso, api, o.ä.
In VB gibt es auch kein Activeprinter-Befehl.
Vielleicht weiß Rainer wie man das lösen könnte.
Gruß
Reinhard
Hallo Reinhard,
In VB gibt es auch kein Activeprinter-Befehl.
braucht man auch nicht.
Der aktive Drucker ist immer ‚Printer‘. Wenn man daran nichts gedreht hat, ist das der Standarddrucker.
Option Explicit
Private Sub Command1\_Click()
Me.Caption = Printer.DeviceName
End Sub
Der Code zeigt den Namen des aktiven Druckers.
Probier mal, ob das in VBA auch so ist.
Gruß Rainer
Der aktive Drucker ist immer ‚Printer‘. Wenn man daran nichts
gedreht hat, ist das der Standarddrucker.
Private Sub Command1_Click()
Me.Caption = Printer.DeviceName
End Sub
Der Code zeigt den Namen des aktiven Druckers.
Probier mal, ob das in VBA auch so ist.
Hallo Rainer,
leider nein, in OL-Vba gibt es kein „Printer“, „Devicename“ auch nicht.
Die Liste aller verfügbaren Drucker erhielt ich in OL-Vba mit sowas:
Set WSHNet = CreateObject(„WScript.Network“)
Dann konnte man mit WSHNet.enum??? auf alle Ducker zugreifen.
Daher meine Annahme daß man mit wmi, fso o.ä. das Problem lösen kann.
Allerdings kenne ich mich da Null aus.
Gruß
Reinhard
Hallo Reinhard,
Die Liste aller verfügbaren Drucker erhielt ich in OL-Vba mit
sowas:
Set WSHNet = CreateObject(„WScript.Network“)
Dann konnte man mit WSHNet.enum??? auf alle Ducker zugreifen.
Daher meine Annahme daß man mit wmi, fso o.ä. das Problem
lösen kann.
Allerdings kenne ich mich da Null aus.
ich mich auch nicht, ich habe da aber mal gründlich gesucht.
Da steht nur ausdrücklich wie es nicht geht, aber kein Hinweis auf eine Lösung. WScript hilft wohl nicht.
Gruß Rainer
Sub druckerinfo()
Dim strPr As String
strPr = ActivePrinter
MsgBox strPr
End Sub
Wie müsste das Makro im Outlook lauten, damit ich dort die
Drucker-Info erhalte? - Ich arbeite mit Office Outlook 2003
Hallo Niclaus,
lieber den Spatz in der Hand als die Taube auf dem Dach.
In diesem Sinne, wie wär’s mit einem OL-Code der kurz eine Word-Instanz öffnet, den ActivePrinter ausliest und Word dann wieder schließt?
Das geht mit
Set appWord=CreateObject(„Word.Application“)
usw.
Kriegste das hin?
Gruß
Reinhard
Outlook VBA Drucker ermitteln
Wie müsste das Makro im Outlook lauten, damit ich dort die
Drucker-Info erhalte? - Ich arbeite mit Office Outlook 2003
Hallo Niclaus,
ein Anton hat mir das Nachfolgende gebastelt, allerdings fehlt beim Namen der Anschluß wie z.B. „auf LPT1:“ wie bei ActivePrinter bei Word:
Sub standarddrucker()
'Standarddrucker ermitteln
Dim objWMI As Object, objItem As Object
Set objWMI = GetObject("winmgmts:\\.\root\cimv2"). \_
ExecQuery("Select \* from Win32\_Printer where Default = 'true'")
For Each objItem In objWMI
MsgBox objItem.properties\_.Item("Name").Value
Next
Set objWMI = Nothing
End Sub
Sub drucker\_als\_standard()
Dim oWMI As Object, colInstalledPrinters As Object, oPrinter As Object
Dim sPrinterName As String
Set oWMI = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
sPrinterName = "HP Deskjet F300 series" 'anpassen
Set colInstalledPrinters = oWMI.ExecQuery("SELECT \* FROM Win32\_Printer WHERE Name = '" & sPrinterName & "'")
' Drucker als Standard-Drucker festlegen
For Each oPrinter In colInstalledPrinters
oPrinter.SetDefaultPrinter
Next
Set oWMI = Nothing
End Sub
Gruß
Reinhard
Daher meine Annahme daß man mit wmi, fso o.ä. das Problem
lösen kann.
Allerdings kenne ich mich da Null aus.
ich mich auch nicht, ich habe da aber mal gründlich gesucht.
Da steht nur ausdrücklich wie es nicht geht, aber kein Hinweis
auf eine Lösung. WScript hilft wohl nicht.
Hallo Rainer,
danke für deine Mühen.
Wenn du gesucht hast und ich, der Anfragesteller sicher auch und nix brauchbares gefunden wurde, gibts da wohl nix.
Ich habe ja was gefunden/bekommen
/t/vba-drucker-info/5597765/7
aber wenn ich mir das so ansehe bin ich doch schneller wenn in in OL kurz eine Word-Instanz aufmache, den Activeprinter auslese usw. *denk*
Eine unbewiesene reine Annahme von mir ist, daß OL nicht auf den Drucker direkt zugreift sondern über Word ausdruckt.
Gruß
Reinhard
Hallo Niclaus,
ein Anton hat mir das Nachfolgende gebastelt
Grüezi Reinhard
Die zwei Makros kommen mir zwar spanisch vor: Ich versteh kaum ein „Wort“. Aber beide funktionieren!
Vielen Dank Dir und Deinem Anton!
Zur Zeit haben wir ja Banken-Krieg mit Frankreich. Ein EDV-Mensch hat in einer Bank in der Schweiz Daten von französischen Kunden geklaut und an den französichen Staat weitergegeben. Sein Deckname ist „Antoine“. - Ist Dein Anton etwa die gleiche Person?
)
Alles Gute
Niclaus
Vielen Dank Rainer für Deine Bemühungen.
Ich habe die Makros von Reinhard übernommen. Siehe oben meine Antwort an Reinhard.
Alles Gute und vorweihnachtliche Grüsse
Niclaus
Outlook Standardrucker ermitteln
Grüezi Nuclaus,
Die zwei Makros kommen mir zwar spanisch vor: Ich versteh kaum
ein „Wort“. Aber beide funktionieren!
Anton oder Antoine *gg* hat wieder Code gezaubert, diesesmal wird der Drucker samt „auf LPT1“ o.ä. angezeigt.
Glaub mal nicht daß ich den Code komplett verstehe
)
Getestet auf OL2007 und XL2000.
Public Sub active\_drucker()
'Standarddrucker ermitteln
Dim objWMI As Object, objItem As Object, sd As String, oReg
Dim strKeyPath, arrValueNames, i, strValue, msg
Set objWMI = GetObject("winmgmts:\\.\root\cimv2"). \_
ExecQuery("Select \* from Win32\_Printer where Default = 'true'")
For Each objItem In objWMI
sd = objItem.properties\_.Item("Name").Value
Next
Set objWMI = Nothing
Const HKEY\_current\_user = &H80000001
Set oReg = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv")
strKeyPath = "Software\Microsoft\Windows NT\CurrentVersion\Devices"
oReg.EnumValues HKEY\_current\_user, strKeyPath, arrValueNames
For i = 0 To UBound(arrValueNames)
oReg.GetStringValue HKEY\_current\_user, strKeyPath, arrValueNames(i), strValue
If InStr(1, arrValueNames(i), sd) 0 Then
msg = arrValueNames(i) & Replace(strValue, "winspool,", " auf ")
End If
Next
Set oReg = Nothing
MsgBox msg, vbInformation, "ActiveDrucker"
End Sub
Gruß
Reinhard