リストボックスにプリンタ一覧と通常使うプリンタを表示する:Access VBA

フォームにリストボックスを配置し、読み込み時イベント内にプリンタ一覧と通常使うプリンタを表示するVBAを作成します。

リストボックスのリストをクリアするには RowSource = "" を、リストを追加するには、AddItem を使います。

BackHome Backテクニック


リストボックスを配置したフォームの作成

フォームにリストボックスを配置し、ラベルを「プリンタ一覧」にします。
リストボックスの値集合タイプのプロパティは、テーブルやクエリを使用しないので「値リスト」に変更します。
リストボックスの値集合タイプのプロパティ

フォームの読み込み時プロパティで「イベントプロシージャ」を選択し、右の[…]ボタンをクリックしVBE画面を開きます。
フォームの読み込み時プロパティ

リストボックスにプリンタ一覧を追加するVBA

リストボックスをクリアし、プリンタ一覧を追加する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

実行結果です。
リストボックスにプリンタ一覧が表示され、最後のリストが通常使うプリンタになっています。
リストボックスにプリンタ一覧が表示


BackHome Backテクニック

Copyright(C) FeedSoft