'Written: November 28, 2009 'Author: Leith Ross 'Summary: Finds a printer by name and returns the printer name and port number. Function FindPrinter(ByVal PrinterName As String) As String 'This works with Windows 2000 and up Dim Arr As Variant Dim Device As Variant Dim Devices As Variant Dim Printer As String Dim RegObj As Object Dim RegValue As String Const HKEY_CURRENT_USER = &H80000001 Set RegObj = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv") RegObj.enumvalues HKEY_CURRENT_USER, "Software\Microsoft\Windows NT\CurrentVersion\Devices", Devices, Arr For Each Device In Devices RegObj.getstringvalue HKEY_CURRENT_USER, "Software\Microsoft\Windows NT\CurrentVersion\Devices", Device, RegValue Printer = Device & " on " & Split(RegValue, ",")(1) If InStr(1, Printer, PrinterName, vbTextCompare) > 0 Then ...