Excel VBAでプリンタ一覧を取得する2種類の方法を掲載

プリンタ一覧の取得する、WMIオブジェクトのExecQueryメソッドを使う方法と、win.NameSpace(4)を使う2種類の方法を掲載しています。



Homeに戻る > Excel 数値・文字列・検索・印刷のTipsへ


VBAでプリンタ一覧の取得するには2種類の方法があります。

WMIオブジェクトのExecQueryメソッドを使う方法と、win.NameSpace(4)を使う方法です。

どちらの方法も滅多に使う場面もないので、掲載しているコードをコピーし使用すればいいかと思います。


関連する「Excel VBAでプリンターを切り替える」を掲載しています、参照してください。



プリンタ一覧を取得するVBA

Excelシート画面

B列はMyGetPrinterA()で列挙しています。

C~E列はMyGetPrinterB()で列挙しています。

C列はプリンタ名

C列は存在するフォルダ名

E列は通常使うプリンタならTRUE、そうでなければFALSEと表示されます。

MyGetPrinterBは、WindowsXPで使用できます。

VBAでプリンタの一覧を取得


Excel VBA実行コード

Option Explicit

Private Sub MyGetPrinterB()
    Dim lrow As Long
    Dim tobj As Object
    Dim tInstPrn As Variant
    Dim tprn As Object
    
    lrow = 6
    Set tobj = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
    Set tInstPrn = tobj.ExecQuery("Select * from Win32_Printer")
    For Each tprn In tInstPrn
        Cells(lrow, 3) = tprn.Name
        Cells(lrow, 4) = tprn.Location
        Cells(lrow, 5) = tprn.Default
        lrow = lrow + 1
    Next

End Sub

Private Sub MyGetPrinterA()
    Dim win As Object
    Dim Obj_Item As Variant
    Dim lrow As Long
    
    lrow = 6
    Set win = CreateObject("Shell.Application")
    For Each Obj_Item In win.NameSpace(4).Items
        Cells(lrow, 2) = Obj_Item.Name
        lrow = lrow + 1
    Next
End Sub

Private Sub CommandButton1_Click()
    MyGetPrinterA
    MyGetPrinterB

End Sub




Homeに戻る > Excel 数値・文字列・検索・印刷のTipsへ

■■■
このサイトの内容を利用して発生した、いかなる問題にも一切責任は負いませんのでご了承下さい
■■■
当ホームページに掲載されているあらゆる内容の無許可転載・転用を禁止します


Copyright (c) Excel-Excel ! All rights reserved