Home |
Search |
Today's Posts |
#4
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Sonia,
Here is some code adapted from Randy Birch's site. I have assumed NT/XP< if you have Win95 post back If you want to read the comments, go see Randy's site. Option Explicit Public Type PRINTER_INFO_1 Flags As Long prescription As Long Pane As Long Comment As Long End Type Public Type PRINTER_INFO_4 pPrinterName As Long pServerName As Long Attributes As Long End Type 'SIZEOFxxx are non-windows constants defined for this method Public Const SIZEOFPRINTER_INFO_1 = 16 Public Const SIZEOFPRINTER_INFO_4 = 12 Public Const PRINTER_LEVEL1 = &H1 Public Const PRINTER_LEVEL4 = &H4 'EnumPrinters enumerates available printers, 'print servers, domains, or print providers. Public Declare Function EnumPrinters Lib "winspool.drv" _ Alias "EnumPrintersA" _ (ByVal Flags As Long, _ ByVal Name As String, _ ByVal Level As Long, _ pPrinterEnum As Any, _ ByVal cdBuf As Long, _ pcbNeeded As Long, _ pcReturned As Long) As Long 'EnumPrinters Parameters: Public Const PRINTER_ENUM_DEFAULT = &H1 Public Const PRINTER_ENUM_LOCAL = &H2 Public Const PRINTER_ENUM_CONNECTIONS = &H4 Public Const PRINTER_ENUM_NAME = &H8 Public Const PRINTER_ENUM_REMOTE = &H10 Public Const PRINTER_ENUM_SHARED = &H20 Public Const PRINTER_ENUM_NETWORK = &H40 'PRINTER_INFO_4 returned Attribute values Public Const PRINTER_ATTRIBUTE_DEFAULT = &H4 Public Const PRINTER_ATTRIBUTE_DIRECT = &H2 Public Const PRINTER_ATTRIBUTE_ENABLE_BIDI = &H800& Public Const PRINTER_ATTRIBUTE_LOCAL = &H40 Public Const PRINTER_ATTRIBUTE_NETWORK = &H10 Public Const PRINTER_ATTRIBUTE_QUEUED = &H1 Public Const PRINTER_ATTRIBUTE_SHARED = &H8 Public Const PRINTER_ATTRIBUTE_WORK_OFFLINE = &H400 'PRINTER_INFO_1 returned Flag values Public Const PRINTER_ENUM_CONTAINER = &H8000& Public Const PRINTER_ENUM_EXPAND = &H4000 Public Const PRINTER_ENUM_ICON1 = &H10000 Public Const PRINTER_ENUM_ICON2 = &H20000 Public Const PRINTER_ENUM_ICON3 = &H40000 Public Const PRINTER_ENUM_ICON4 = &H80000 Public Const PRINTER_ENUM_ICON5 = &H100000 Public Const PRINTER_ENUM_ICON6 = &H200000 Public Const PRINTER_ENUM_ICON7 = &H400000 Public Const PRINTER_ENUM_ICON8 = &H800000 Public Const LB_SETTABSTOPS As Long = &H192 Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" _ (ByVal hwnd As Long, _ ByVal wMsg As Long, _ ByVal wParam As Long, _ lParam As Any) As Long Public Declare Function lstrcpyA Lib "kernel32" _ (ByVal RetVal As String, ByVal Ptr As Long) As Long Public Declare Function lstrlenA Lib "kernel32" _ (ByVal Ptr As Any) As Long Sub EnumPrintersWin() Dim Success As Boolean Dim cbRequired As Long Dim cbBuffer As Long Dim pntr() As PRINTER_INFO_4 Dim cEntries As Long Dim iPrinter As Long Dim sAttr As String Dim sMsg As String Call EnumPrinters(PRINTER_ENUM_CONNECTIONS Or PRINTER_ENUM_LOCAL, _ vbNullString, PRINTER_LEVEL4, _ 0, 0, cbRequired, cEntries) ReDim pntr((cbRequired \ SIZEOFPRINTER_INFO_4)) cbBuffer = cbRequired If EnumPrinters(PRINTER_ENUM_CONNECTIONS Or PRINTER_ENUM_LOCAL, _ vbNullString, PRINTER_LEVEL4, _ pntr(0), cbBuffer, _ cbRequired, cEntries) Then For iPrinter = 0 To cEntries - 1 With pntr(iPrinter) sMsg = sMsg & GetStrFromPtrA(.pPrinterName) & vbCrLf End With Next iPrinter MsgBox sMsg, vbInformation, "List of Printers" Else MsgBox "Error enumerating printers." End If 'EnumPrinters End Sub Public Function GetStrFromPtrA(ByVal lpszA As Long) As String GetStrFromPtrA = String$(lstrlenA(ByVal lpszA), 0) Call lstrcpyA(ByVal GetStrFromPtrA, ByVal lpszA) End Function -- HTH Bob Phillips ... looking out across Poole Harbour to the Purbecks (remove nothere from the email address if mailing direct) " wrote in message ... is there a way to retrive the list of available printers in a macro, so as to display the list in a msgbox. Thanks Sonia |
Thread Tools | Search this Thread |
Display Modes | |
|
|
![]() |
||||
Thread | Forum | |||
List of available printers | New Users to Excel | |||
Network printers, how? | Excel Programming | |||
Printers & LPT | Excel Programming | |||
Creating a printers list | Excel Programming | |||
List of Printers | Excel Programming |