Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

Aktiven Drucker mit Outlook-Vba ermitteln | Herbers Excel-Forum


Betrifft: Aktiven Drucker mit Outlook-Vba ermitteln von: Reinhard
Geschrieben am: 09.12.2009 16:03:54

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

  

Betrifft: AW: Aktiven Drucker mit Outlook-Vba ermitteln von: Hajo_Zi
Geschrieben am: 09.12.2009 16:12:52

Hallo Reinhard,

die Version ist schon entscheident. Forum für 2007 http://www.office2007-hilfe.de/outlook-hilfe/, für 2010 http://www.office2010-hilfe.de/outlook2010-hilfe/

GrußformelHomepage


  

Betrifft: AW: Aktiven Drucker mit Outlook-Vba ermitteln von: Reinhard
Geschrieben am: 09.12.2009 16:35:57

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


  

Betrifft: AW: Aktiven Drucker mit Outlook-Vba ermitteln von: Anton
Geschrieben am: 09.12.2009 16:32:26

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


  

Betrifft: AW: Aktiven Drucker mit Outlook-Vba ermitteln von: Reinhard
Geschrieben am: 09.12.2009 16:57:05

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


  

Betrifft: noch eine Variante von: Anton
Geschrieben am: 15.12.2009 11:25:13

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


  

Betrifft: Funktioniert :-) von: Reinhard
Geschrieben am: 15.12.2009 12:42:24

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


Beiträge aus den Excel-Beispielen zum Thema "Aktiven Drucker mit Outlook-Vba ermitteln"