プリンターの情報を取得する。
WMI(Windows Management Instrumentation)を利用してプリンターの情報を取得します。
VBAでWMIから情報を取得するにはSWbemLocatorオブジェクトのConnectServerメソッドを利用してコンピューター上の WMIへ接続することで取得できます。
プリンターの情報は接続したWMIの Win32_Printerクラス から取得します。
'*****************************************************************
' プリンターの情報取得
'*****************************************************************
Sub getPrinterInfo()
'SWbemLocatorオブジェクトを作成してWMIに接続
Dim oWMI As Object
Set oWMI = CreateObject("WbemScripting.SWbemLocator").ConnectServer
'オブジェクト取得のクエリを実行
Dim oQrySet As Object
Set oQrySet = oWMI.ExecQuery("SELECT * FROM Win32_Printer")
'プリンタ情報の取得
Dim oPrint As Object
For Each oPrint In oQrySet
Debug.Print "--------------------------------------------"
Debug.Print "プリンタ名:" & oPrint.Name
Debug.Print "共有プリンタ名:" & oPrint.ShareName
Debug.Print "ドライバー名:" & oPrint.DriverName
Debug.Print "プリンタのポート:" & oPrint.PortName
Debug.Print "プリンターの状態:" & getPrinterStatus(oPrint.PrinterStatus)
Debug.Print "デフォルトプリンタ:" & oPrint.Default
Next
Set oPrint = Nothing
Set oQrySet = Nothing
Set oWMI = Nothing
End Sub
'*****************************************************************
' プリンターステータスの変換
'-----------------------------------------------------------------
' 第1引数:プリンターステータスの数値
'-----------------------------------------------------------------
' 戻り値 :プリンターステータスのる文字列
'*****************************************************************
Function getPrinterStatus(getStatus As Long)
Select Case getStatus
Case 1
getPrinterStatus = "(1)その他"
Case 2
getPrinterStatus = "(2)不明"
Case 3
getPrinterStatus = "(3)アイドル状態"
Case 4
getPrinterStatus = "(4)印刷中"
Case 5
getPrinterStatus = "(5)ウォームアップ"
Case 6
getPrinterStatus = "(6)印刷の停止"
Case 7
getPrinterStatus = "(7)オフライン"
End Select
End Function■実行結果



