関数:Windows のデフォルトプリンターを取得

TOP > サンプル / 関数 > *      [...]


Love

概要

Windows のデフォルトプリンターを取得します。同時にデバイスに登録されているプリンターの一覧も取得します。

デバイスとプリンター

印刷関連のメソッドで、現在の印刷環境を判断するのにご使用ください。

機能

  1. Windows OSに登録されているプリンターを一覧で取得します。
  2. 一覧の1番目にデフォルトのプリンター名を返します。
  3. 一覧の2番目以降に他のプリンター名を返します。
  4. 一覧の1番目「strPrinterName(0)」が空 ""の時はプリンターは一件も登録されていません。

形式

001 Boolean = GetDefPrinterName_All(ByRef strPrinterName() As String)

引数

  1. 第一引数 ( string strPrinterName() ) :
    プリンター名の一覧が返されます。
    動的配列なので配列のサイズは指定しません。関数側でReDim で設定されて返されます。
    Dim strPrinterName() As String

戻り値

  1. True:エラー無し
  2. False:実行エラー

サンプル

デフォルトプリンター名をstrPrinterName(0)に返します。それ以外はstrPrinterName(1)以降の配列に返します。

Downloadsample-GetAllPrinters.xls

001 Option Explicit 002 003 Sub test_Main_nnn2GetAllPrinters() 004 Dim strPrinterName() As String 005 Dim bRet As Boolean 006 bRet = nnn2GetAllPrinters(strPrinterName) 007 Dim i As Long 008 For i = 0 To UBound(strPrinterName) 009 If i = 0 Then 010 'Default Printer 011 Debug.Print i & " = " & strPrinterName(i) _ 012 & " (Default Printer)" 013 Else 014 Debug.Print i & " = " & strPrinterName(i) 015 End If 016 Next i 017 Debug.Print "Cound = " & UBound(strPrinterName, 1) + 1 018 End Sub 019 020 '====================================================================== 021 ' 022 ' 名称 :OSのプリンターを全て取得 023 ' 機能 :OSのプリンターを取得して、strPrinterName()配列に返す。 024 ' strPrinterName(0)には「通常使うプリンター」がセットされる。 025 ' strPrinterName(1)以上にそれ以外はプリンターがセットされる。 026 ' バージョン:1.0 027 ' 作成日 :2017/08/19 初版 028 ' URL :http://pdf-file.nnn2.com/?p=1012 029 ' 030 '====================================================================== 031 032 Private Function nnn2GetAllPrinters( _ 033 ByRef strPrinterName() As String) As Boolean 034 035 nnn2GetAllPrinters = True 036 On Error GoTo Err_nnn2GetAllPrinters: 037 038 ReDim strPrinterName(10) As String 039 Dim varWMIService As Variant 040 Dim varPS As Variant 041 Dim objPrinter As Object 042 Dim i As Long 043 i = 0 044 strPrinterName(0) = "" 045 strPrinterName(1) = "" 046 Set varWMIService = CreateObject("winmgmts:{impersonationLevel=impersonate}!¥¥.¥root¥cimv2") 047 Set varPS = varWMIService.ExecQuery("Select * from Win32_Printer") 048 For Each objPrinter In varPS 049 If objPrinter.Default Then 050 '通常使うプリンターを取得 051 strPrinterName(0) = objPrinter.Caption 052 Else 053 i = i + 1 054 strPrinterName(i) = objPrinter.Caption 055 End If 056 Next 057 ReDim Preserve strPrinterName(i) As String 058 Exit Function 059 060 Err_nnn2GetAllPrinters: 061 MsgBox "nnn2GetAllPrinters " & vbCrLf & _ 062 Err.Description, vbCritical, "Runtime Error" 063 nnn2GetAllPrinters = False 064 End Function


 Highlight:プログラミング言語のソースコードを構文で色分け (GUI編)
 

実行結果

0 = Adobe PDF (Default Printer) 1 = Microsoft XPS Document Writer 2 = Microsoft Print to PDF 3 = Fax 4 = ¥¥AMD-PC¥Brother DCP-J957N Printer Cound = 5

 

  1. 配列の1番目(添字=0)にデフォルトのプリンタ名が返されます。
  2. 「¥¥AMD-PC¥」とあるのはネットワークプリンターです。
  3. プリンター名の数は Ubound(strPrinterName,1)+1 の結果です。

参照

サンプル一覧

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


★ 文章での質問は難しいですよネ。でも、早く解決して、家に帰りたい。


SAMURAI Plugin

コメントをする時は出来れば以下もお願いします。

  • OS名 バージョン
  • Acrobat バージョン
  • ツール(Excel等) バージョン
コメントにサンプルコードを入れる時はコードを全て全角文字列にしてください。コチラで半角に戻します。それでもエラーが回避できない時はコメント下さい。個別に対処します。



お仕事で当サイトを見ている方へ
考え込んだら、ご質問下さい。
一緒に解決策を考えましょう。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください