Excel VBA プリンタを指定して印刷する

スポンサーリンク

プリンタを指定して印刷する方法

プリンタを指定して印刷する方法は、Application【アプリケーション】オブジェクトのActivePrinter【アクティブプリンタ】プロパティで設定する方法とPrintOut【プリントアウト】 メソッドを使用する方法があります。

Application【アプリケーション】オブジェクトのActivePrinter【アクティブプリンタ】プロパティは、現在アクティブなプリンタ名の取得と設定ができます。

現在アクティブなプリンタ名を取得するコード

Sub sample()
MsgBox Application.ActivePrinter
End Sub

実行結果


プリンタ名の後にポート番号が表示されます。Application【アプリケーション】オブジェクトのActivePrinter【アクティブプリンタ】プロパティはプリンタの指定をするときも、Application.ActivePrinter =”プリンタ名:ポート番号:”という形でプリンタ名とポート番号の指定が必要になります。ネットワークプリンタの場合 ポート番号が変わることがありエラーの原因になります。
PrintOut 【プリントアウト】メソッドの場合は、引数のActivePrinter【アクティブプリンタ】にプリンタ名を指定できますが、ポート番号は不要です。また、プリントサーバーが設置されていれば外部からPrintOut ActivePrinter:=”¥¥http://アドレス¥プリンタ名”アドレスとプリンタ名を指定することで印刷をすることができます。

これらの理由から、プリンタ名を指定して印刷する場合は、PrintOut【プリントアウト】メソッドの利用がおすすめです。

PrintOut【プリントアウト】メソッドの書式と設定値(引数)の説明

[]内は省略可能です。
オブジェクト.PrintOut([From, To, Copies, Preview, ActivePrinter, PrintToFile,
Collate, PrToFileName, IgnorePrintAreas])

  • オブジェクト
    以下の印刷対象となるオブジェクトまたはコレクションを指定します。
    WorkBook【ワークブック】オブジェクト、Sheets【シーツ】コレクション
    Worksheet【ワークシート】オブジェクト、Worksheets【ワークシーツ】コレクション
    Chart【チャート】オブジェクト、Charts【チャーツ】コレクション
    Range【レンジ】オブジェクト、Window【ウィンドウ】オブジェクト
  • From【フローム】
    印刷を開始するページ番号を指定します。
    省略した場合は最初のページから印刷されます。
  • To【トゥ】
    印刷を終了するページ番号を指定します。
    省略した場合は最後のページまで印刷されます。
  • Copies【コピーズ】
    印刷部数を指定します。
    省略した場合は1部印刷されます。
  • Preview【プレビュー】
    印刷前にプレビューを表示するかしないかをブール型の値で指定します。
    省略した場合はFalseが設定されプレビューは表示されません。

    設定値内容
    Trueプレビューを表示します。
    Falseプレビューを表示しません。(既定値)
  • ActivePrinter【アクティブプリンタ】
    使用するプリンタの名前を指定します。
    省略した場合は現在アクティブなプリンタが指定されます。
  • PrintToFile【プリントトウファイル】
    印刷する内容をファイルに出力するかしないかをブール型の値で指定します。
    省略した場合はFalseが設定されファイルは出力されません。

    設定値内容
    True出力します。ファイル名は引数PrToFileNameに指定
    False出力しません。(既定値)
  • Collate【コレート】
    複数枚数印刷する場合、部単位で印刷するかしないかをブール型の値で指定します。
    省略した場合はFalseが設定され部単位印刷されません。

    設定値内容
    True部単位の印刷になります。
    False部単位印刷されません。(既定値)
  • PrToFileName【プリントトウファイルネーム】
    引数PrintTofile【プリントトウファイル】がTrueの場合
    出力先のファイル名を指定します。

    省略した場合はファイル名を指定するダイアログボックスが表示されます。
    (引数PrintTofile【プリントトウファイル】がTrueの場合)
  • IgnorePrintAreas【イグノアプリントアリアーズ】
    指定したオブジェクトに設定されている印刷範囲を
    無視するかしないかをブール型に値で指定します。

    オブジェクトにWorkbook【ワークブック】オブジェクト、Sheets【シーツ】コレクション
    Worksheet【ワークシート】オブジェクト、Worksheets【ワークシーツ】コレクション
    を指定した場合のみ指定ができます。
    省略した場合はFalseが設定され設定した印刷範囲を無視しません。

    設定値内容
    True印刷範囲を無視して印刷します。
    False印刷範囲を無視しません。(既定値)

PrintOut【プリントアウト】メソッド使用コード例

アクティブシートを印刷するコード例

Sub sample()
 ActiveSheet.PrintOut
End Sub

アクティブシートの2 から 3 ページ目を印刷するコード例

Sub sample2()
 ActiveSheet.PrintOut From:=2, To:=3
End Sub

アクティブシートの2 ページ目から 3 ページ目を 3 部印刷するコード例

Sub sample3()
 ActiveSheet.PrintOut From:=2, To:=3, Copies:=3
End Sub

アクティブシートの2 ページ目から 3 ページ目を 3 部印刷する
印刷プレビューを表示するコード例

Sub sample4()
 ActiveSheet.PrintOut From:=2, To:=3, Copies:=3, Preview:=True
End Sub

アクティブシートを他の場所のプリントサーバーに送りプリンタを指定して印刷するコード例

Sub sample5()
 ActiveSheet.PrintOut ActivePrinter:="¥¥http://アドレス¥プリンタ名"
End Sub

以上で、プリンタを指定して印刷する方法の解説を終了します。ありがとうございました。

スポンサーリンク

関連記事・広告