ExcelでOSに登録されているプリンター一覧を手軽に取得!VBAマクロ

Excel VBAを使ってOSに登録されているプリンターの一覧を取得する方法をご紹介します。ちょっとした業務の中で、登録されているプリンターの情報が欲しい時、どうしますか?手動で確認するのは面倒ですよね。そんな時にこのマクロが役立ちます!

このコードの特徴

  1. 新しいワークシートにプリンターの一覧を出力。
  2. 既定のプリンターかどうかも一目で確認可能。

VBAコード

以下のコードを標準モジュールへコピペしてください。

Sub ListPrinters()

    Dim objWMIService As Object
    Dim colPrinters As Object
    Dim objPrinter As Object
    Dim ws As Worksheet
    Dim defaultPrinter As String
    Dim sheetName As String
    Dim sheetCounter As Integer
    Dim rowCounter As Integer

    ' WMIを使用して既定のプリンターを取得
    Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
    Set colPrinters = objWMIService.ExecQuery("SELECT * FROM Win32_Printer WHERE Default = TRUE")
    For Each objPrinter In colPrinters
        defaultPrinter = objPrinter.Name
    Next

    ' 新しいワークシートを追加
    sheetName = "Printers"
    sheetCounter = 1
    Do While SheetExists(sheetName)
        sheetCounter = sheetCounter + 1
        sheetName = "Printers (" & sheetCounter & ")"
    Loop
    Set ws = ThisWorkbook.Worksheets.Add
    ws.Name = sheetName

    ' WMIを使用してすべてのプリンターを取得
    Set colPrinters = objWMIService.ExecQuery("SELECT * FROM Win32_Printer")

    ' プリンターの一覧をワークシートに書き出す
    rowCounter = 1
    For Each objPrinter In colPrinters
        ws.Cells(rowCounter, 1).Value = objPrinter.Name
        If objPrinter.Name = defaultPrinter Then
            ws.Cells(rowCounter, 2).Value = "TRUE"
        Else
            ws.Cells(rowCounter, 2).Value = "FALSE"
        End If
        rowCounter = rowCounter + 1
    Next

    ' オブジェクトを解放
    Set colPrinters = Nothing
    Set objWMIService = Nothing

End Sub

Function SheetExists(sheetName As String) As Boolean
    Dim ws As Worksheet
    On Error Resume Next
    Set ws = ThisWorkbook.Worksheets(sheetName)
    On Error GoTo 0
    If Not ws Is Nothing Then
        SheetExists = True
    Else
        SheetExists = False
    End If
End Function

コードの使い方

  1. Excelを開き、VBAエディタ(Alt + F11)を起動します。
  2. 新しい標準モジュールを挿入し、提供されているコードをペーストします(挿入→標準モジュール)。
  3. VBAエディタを閉じてからマクロを実行すると、新しいワークシートにプリンターの一覧が出力されます。マクロを実行するために登録マクロの一覧を出すにはAlt + F8 を使います。

注意点

  • VBAマクロはセキュリティのリスクがあるため、実行する前に必ず内容を確認してください。
  • このマクロは安全ですが、他のソースから取得したマクロを実行する前には十分な注意が必要です。
  • 既に「Printers」という名前のシートが存在する場合、新しいシートは「Printers (n)」のような名前で作成されます。

まとめ

Excel VBAを使用して簡単にプリンターの一覧を取得できることをお伝えしました。業務効率化の一助となることを願っています。

コメント

PAGE TOP
タイトルとURLをコピーしました