Dim lct As SWbemLocator
Dim sv As SWbemServices
Dim prtSet As SWbemObjectSet
Dim prt As SWbemObject
Dim sPrinter As String
Set lct = New WbemScripting.SWbemLocator
Set sv = lct.ConnectServer
Set prtSet = sv.ExecQuery("Select * From Win32_Printer")
For Each prt In prtSet
'// プリンタ名を変数に取得します。
sPrinter = prt.Caption
Next
Set prt = Nothing
Set prtSet = Nothing
Set sv = Nothing
Set lct = Nothing
Excel VBAでローカルのプリンタ情報を取得する
前田 (2011年12月22日 10:40)
システムソリューション事業部 / ビジネスソリューション課 / Excel / VBA
こんにちは
システムソリューション事業部
ビジネスソリューション課の
前田です。
今回は、Excel VBAでローカルのプリンタ情報を取得する
という方法です。
何はともあれコードですが、
Dim lct As SWbemLocator Dim sv As SWbemServices Dim prtSet As SWbemObjectSet Dim prt As SWbemObject Dim sPrinter As String Set lct = New WbemScripting.SWbemLocator Set sv = lct.ConnectServer Set prtSet = sv.ExecQuery("Select * From Win32_Printer") For Each prt In prtSet '// プリンタ名を変数に取得します。 sPrinter = prt.Caption Next Set prt = Nothing Set prtSet = Nothing Set sv = Nothing Set lct = Nothingこんな感じです。
WMI(Windows Management Instrumentation)を使って
Windowsのローカルのプリンタ情報を取り出すのですね。
Set wb = ThisWorkBook Call wb.PrintOut(, , 1, , sPrinter) Set wb = Nothingこんな感じで、プリンタ名を指定して印刷するような場合、
選択用のリストボックスなんかと組み合わせて使うと
プリンタを選択するユーザインタフェースを
Excel上だけで実現できます。
ご参考までに。