Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1120to1124
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

Aktiven Drucker mit Outlook-Vba ermitteln

Aktiven Drucker mit Outlook-Vba ermitteln
Reinhard
Hallo Wissende,
in Excel, Word kriegt man ja den aktiven Drucker in Vba mit ActivePrinter usw.
In Outlook gibt's das aber nicht. Auch nicht DefaultPrinter, Printer, u.ä.
Stundenlanges Googlen brachte mich nicht weiter :-(
Weiß jmd. hier wie man den aktiven Drucker in OL-Vba auslesen kann und auch abändern kann?
Ein Link zu einem guten OL-Forum mit Archiv hilft mir evtl. auch schon.
Den workaround, aus OL-Vba heraus eine Word-Instanz zu öffnene, den ActivePrinter auszulesen usw. krieg ich hin, aber geht es nicht direkt?
Danke ^ Gruß
Reinhard

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Aktiven Drucker mit Outlook-Vba ermitteln
09.12.2009 16:35:57
Reinhard
Hallo Hajo,
mit der Version hast du schon Recht, andrerseits kapiere ich nicht daß man mit OL-Vba nicht einfach mal den Standarddrucker anzeigen/abändern kann, Versionsunabhängig.
Bei deinem ersten Link muß man hinten das Komma wegmachen, dann geht es.
Bei beiden habe ich bei "Suchen" Drucker eingegeben. Bei 2010 gab's keinen Treffer, bei 2007 16, aber es ging um etwas anderes :-(
Danke für deine Reaktion
Gruß
Reinhard
Anzeige
AW: Aktiven Drucker mit Outlook-Vba ermitteln
09.12.2009 16:32:26
Anton
Hallo Reinhard,
probier sowas:
Code:

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  


mfg Anton
Anzeige
AW: Aktiven Drucker mit Outlook-Vba ermitteln
09.12.2009 16:57:05
Reinhard
Hallo Anton,
scheinbar nicht so einfach in OL banale Dinge zu tun.
Danke dir schonmal für den Code, sieht gut aus.
Ein Problem gibt es noch, lasse ich die Prozedur Standarddrucker in OL laufen so erscheint bei mir:
HP Deskjet 600 (Monochrome)
Benutze ich aber "ActivePrinter" in Excel kommt:
HP Deskjet 600 (Monochrome) auf LPT1:
Gruß
Reinhard
noch eine Variante
15.12.2009 11:25:13
Anton
Hallo Reinhard,
Code:

Public Sub active_drucker()  
 'Standarddrucker ermitteln
  Dim objWMI As Object, objItem As Object, sd As String    
  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  


mfg Anton
Anzeige
Funktioniert :-)
15.12.2009 12:42:24
Reinhard
Hallo Anton,
danke dir, jetzt klappt es komplett.
Getestet in OL2007 und Excel2000.
Für das hiesige Archiv, oben muß noch diese Zeile rein:
Dim strKeyPath, arrValueNames, i, strValue, msg
Gruß
Reinhard

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige