ここでは、Access-VBA において、デフォルトプリンタおよびプリンタの一覧を取得するサンプルスクリプトを掲載しています。
スポンサーリンク
プリンタの一覧を取得する
次は、デフォルトプリンタとプリンタの一覧をすべて取得して、コンボボックスに表示するサンプルスクリプトです。なお、フォーム上にコンボボックスコントロール(名前:cmbPrinters)を配置してあるものとします。
Dim defPrt As Printer ' デフォルトプリンタ
Dim prt As Printer
'現在のデフォルトプリンタを取得する
Set defPrt = Application.Printer
'すべてのプリンタを取得してコンボボックスに表示
For Each prt In Application.Printers
' プリンタのデバイス名をコンボボックスに追加
Me!cmbPrinters.AddItem prt.DeviceName
Next prt
なお、コンボボックスで選択したプリンタ情報は次のように取得することができます。次のサンプルスクリプトでは、デフォルトプリンタをコンボボックスで選択したプリンタに変更しています。
' デフォルトプリンタを設定(変更)する Set Application.Printer = Application.Printers(Me!cmbPrinters.Value)
Excel でプリンタの一覧を取得する
使用頻度も多いような気がしますが、残念ながら Excel では Application.Printers によってプリンタの一覧を取得できないようです。Excel でプリンタの一覧を取得するには、参照設定に「Microsoft Access XX.X Object Library」を追加することで、使用することができそうです。
画像はExcel 2013です。なお、動作は未確認です。m(__)m

Excel-VBA 参照設定
Dim accessObj As New Access.Application
Dim accessPrinterObj As Access.Printer
'プリンタの一覧を取得する
For Each accessPrinterObj In accessObj.Printers
' プリンタを出力する
Debug.Print accessPrinterObj.DeviceName
Next
Set accessObj = Nothing