|
在lotustower MM 的指教下终于得到期望的答案了,
将以下代码复制到11的附件就可以了
Sub GetPrinterStatus() Dim i As Integer Dim APN Dim strComputer As String Dim Msg As String Dim objWMIService As Object Dim colInstalledPrinters As Object Dim objPrinter As Object Dim strPrinterStatus As String strComputer = "." Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") Set colInstalledPrinters = objWMIService.ExecQuery _ ("Select * from Win32_Printer") i = 4
Sheet1.Range("B4:F11").Clear
For Each objPrinter In colInstalledPrinters 'Msg = "Name: " & objPrinter.Name & vbCrLf 'Msg = Msg & "Location: " & objPrinter.Location & vbCrLf APN = Application.ActivePrinter
If objPrinter.Name = Right(APN, Len(APN) - InStr(1, APN, "的") - 1) Then '判断是否为默认打印机
Select Case objPrinter.PrinterStatus Case 1 strPrinterStatus = "Other" Case 2 strPrinterStatus = "Unknown" Case 3 strPrinterStatus = "Idle" Case 4 strPrinterStatus = "Printing" Case 5 strPrinterStatus = "Warmup" End Select 'Msg = Msg & "Printer Status: " & strPrinterStatus & vbCrLf 'Msg = Msg & "Server Name: " & objPrinter.ServerName & vbCr 'Msg = Msg & "Share Name: " & objPrinter.ShareName & vbCr 'MsgBox Msg
With Sheet1 .Cells(i, 2) = objPrinter.Name .Cells(i, 3) = objPrinter.Location .Cells(i, 4) = strPrinterStatus .Cells(i, 5) = objPrinter.ServerName .Cells(i, 6) = objPrinter.ShareName End With i = i + 1 End If Next End Sub |