教えて!ExcelVBA!

ExcelVBAの基礎知識・書き方について紹介します。

【ExcelVBA 印刷】プリンタを選択するダイアログボックスを表示する方法について教えて!

f:id:m_kbou:20210506074619p:plain

印刷する直前にプリンタダイアログボックスを表示してプリンタを選択するやり方となります。プリンタ選択後にダイアログボックス内の<OK>ボタンをクリックすると印刷が開始されます。このプリンタダイアログボックスを表示する方法について紹介します。

 

 

構文

記述方法は以下の通りとなります。

Application.Dialogs(xlDialogPrinterSetup).Show

[説明]:

プリンタを選択するダイアログボックスを表示するには「Application.Dialogs(xlDialogPrinterSetup).Show」と記述します。表示されたダイアログボックス内には<OK>ボタンと<キャンセル>ボタンと<設定>ボタンが表示されます。プリンタ選択後に<OK>ボタンをクリックすると戻り値として「True」が返され、<キャンセル>ボタンをクリックすると戻り値として「False」が返されます。また、<設定>ボタンをクリックするとプリンタの設定画面が表示されます。内容を纏めると、「プリンタダイアログボックスを表示し、印刷するプリンタを選択後に<OK>又は<キャンセル>ボタンをクリックして下さい。」との意味になります。

[記述例]:

プリンタ = Application.Dialogs(xlDialogPrinterSetup).Show

 

使い方

使い方について具体的に説明していきます。

[プログラミング例]:

Sub サンプル()

  '↓処理①
  Dim プリンタ As Boolean

  '↓処理②
  プリンタ = Application.Dialogs(xlDialogPrinterSetup).Show

  '↓処理③
  If (プリンタ = True) Then
    Sheets("Sheet1").PrintPreview
  End If

End Sub

処理の流れは以下の通りとなります。

[処理①]:変数定義
Dimによる変数定義となります。

[処理②]:プリンタダイアログボックスを表示して戻り値をセット
プリンタダイアログボックスを開きます。ダイアログボックス内には<OK>ボタンと<キャンセル>ボタンがあり、そのいずれかをクリックした時点で戻り値が返されます。<OK>ボタンをクリックすると「True」が返され、<キャンセル>ボタンをクリックすると「False」が返されます。その戻り値を上記[処理①]で定義した変数:プリンタにセットします。

[処理③]:変数:プリンタにセットされた戻り値を判断
上記[処理②]で変数:プリンタにセットされた戻り値が「True」の場合、Sheet1シートを印刷プレビューします。(※「True」以外の場合は何もしません。)

f:id:m_kbou:20210506074251p:plain

※上記のプログラミング例は、VBE(VBA記述画面)に記述しないと実行ができません。VBEの開き方についてはこちらを参考にして下さい。

[実行例]:

①Sheet1シートのA1セル~G8セルにデータが入力されています。<実行>ボタンには上記のプログラミング例のプログラムが登録されています。この<実行>ボタンをクリックします。(※ボタンにプログラムを割り当てるにはこちらを参考にして下さい。)

f:id:m_kbou:20210506074314p:plain

②プリンタダイアログボックスが表示されるので、印刷するプリンタを選択して<OK>ボタンをクリックします。

f:id:m_kbou:20210506074353p:plain

③結果は以下の様になり、Sheet1シートのA1セル~G8セルデータがプレビューで印刷される事を確認できます。(※今回は「PrintPreview」の記述で印刷プレビュー表示としましたが、通常の印刷をする場合には「PrintOut」を記述して下さい。印刷プレビューの詳細についてはこちら、印刷の詳細についてはこちらを参考にして下さい。)

f:id:m_kbou:20210506074408p:plain

[サンプル]:

上記で説明したファイルをダウンロードできます。ご自由にお使い下さい。

drive.google.com

プリンタを選択するダイアログボックスを表示する方法についての説明は以上です。

 

おわりに

今回はプリンタを選択するダイアログボックスの表示方法について説明しました。プリンタを選択して印刷する手順が簡単になるテクニックです。是非覚えておいて下さい。