リストボックスを配置したフォームの作成
フォームにリストボックスを配置し、ラベルを「プリンタ一覧」にします。
リストボックスの値集合タイプのプロパティは、テーブルやクエリを使用しないので「値リスト」に変更します。
フォームの読み込み時プロパティで「イベントプロシージャ」を選択し、右の[…]ボタンをクリックしVBE画面を開きます。
リストボックスにプリンタ一覧を追加するVBA
リストボックスをクリアし、プリンタ一覧を追加するVBAです。
VBAの解説
・RowSource = ""でリストボックスをクリアしています。
・GetObject("winmgmts:~ でWMI(Windows Management Instrumentation)を使い、CIM(Common
Information Model)のオブジェクトを取得します。
・ExecQuery("Select * from Win32_Printer")でWin32_Printerクラスのクエリを設定しています。
・コレクションのDefaultプロパティがTRUEの場合、通常使うプリンタになります。
・コレクションのNameプロパティプリンタ名です。
・AddItemでリストを追加します。
Private Sub Form_Load()
Dim tobj As Object
Dim tPrn As Variant
Dim tP As Object
Me.リスト0.RowSource = ""
Set tobj = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
Set tPrn = tobj.ExecQuery("Select * from Win32_Printer")
For Each tP In tPrn
If tP.Default = True Then
Me.リスト0.AddItem tP.Name & " (通常使うプリンタ)"
Else
Me.リスト0.AddItem tP.Name
End If
Next
End Sub
実行結果です。
リストボックスにプリンタ一覧が表示され、最後のリストが通常使うプリンタになっています。