■ Accessのデフォルトのプリンタを設定する (2002,2003,2007)

図 Accessのデフォルトのプリンタを設定する
Accessのレポートなどを印刷するときのデフォルトのプリンタを選択します。Access 2002, 2003,2007では、Windowsのデフォルトプリンタとは別に、Access固有のデフォルトプリンタを選択することができます。このサンプルは、プリンタのコンボボックスからAccessのデフォルトプリンタを選択します。フォームを開くと、コンボボックスにAccessのデフォルトプリンタが選択された状態で表示されます。
レポートがデフォルトプリンタに印刷されるように設定されているときは、デフォルトプリンタを変更することにより出力先のプリンタを自動的に切り替えることができます。
1. 新規データベース作成
Accessを起動したら、ツールバーから新規作成のアイコン
をクリックして、作業フォルダworkにW170.mdbを作成します。
2. モジュールをインポート
Windowsのエクスプローラから、170.mdb(このページの最後からダウンロードできます)をダブルクリックして開きます。データベースウィンドウのオブジェクトから[モジュール]をクリックしたら、モジュール(basHelper)をドラッグしてW170.mdbのデータベースウィンドウにドロップします。モジュールがインポートされたら、170.mdbを閉じます。
3. 新規フォーム作成
データベースウィンドウのオブジェクトから[フォーム]をクリックして、右側の新規オブジェクトのショートカットから[デザインビューでフォームを作成する]をダブルクリックします。
4. コンボボックス作成
ツールボックスのコントロールウィザードが無効になっていることを確認します。ツールボックスからコンボボックスのアイコン
をクリックしたら、フォームの詳細セクションにドラッグします。ラベルの標題に「プリンタ」を入力したら、コンボボックスの上に移動します。コンボボックスをダブルクリックしてプロパティウィンドウを表示したら、表のようにプロパティを設定します。

図 フォームにコンボボックス作成
表 フォームに作成したコントロールのプロパティ
|
コントロールの種類 |
プロパティ |
値 |
|
コンボボックス |
名前 |
cboPrinters |
|
値集合タイプ |
値リスト |
|
|
値集合ソース |
空白 |
|
|
連結列 |
1 |
|
|
列数 |
1 |
5. コードビューに切り替えてイベント登録
ツールバーからコードのアイコン
をクリックしてVBEを表示します。コードビューが表示されたらOption Explicitの直後に、次のイベントとプロシージャを追加します。(イベントプロシージャは、ドロップダウンリストからオブジェクトとプロシージャを選択すると自動生成されますので、手入力する必要ありません。)
Private Sub Form_Load()
fsFillPrinterList Me.cboPrinters
Me.cboPrinters = Application.Printer.DeviceName
End Sub
Private Sub cboPrinters_AfterUpdate()
Dim lngIndex As Long
lngIndex = Me.cboPrinters.ListIndex
Set Application.Printer = Application.Printers(lngIndex)
End Sub
6. フォームを開く
VBEのツールバーから表示(Access)のアイコン
をクリックして、Accessのウィンドウに切り替えます。Accessのツールバーからフォームビューのアイコン
をクリックしてフォームを開きます。コンボボックスからWindowsにインストールされているプリンタを表示したら、Accessのデフォルトプリンタを選択します。デフォルトプリンタに印刷されるように設定されているレポートは、ここで設定したプリンタに出力されます。

図 コンボボックスからAccessのデフォルトプリンタを選択する
Note
|
Accessのデフォルトプリンタの有効範囲 Accessのデフォルトプリンタを変更したとき、データベースを開いている間は、そのプリンタが有効になっています。ただし、データベースを一旦閉じると、WindowsのデフォルトプリンタがAccessのデフォルトプリンタとして初期化されます。 |
●解説
コンボボックスに、Windowsにインストールされているすべてのプリンタを表示するには、サブプロシージャfsFillPrinterListを呼びます。このサブプロシージャの引数には、コンボボックスのオブジェクトを指定します。ここでは、フォーム読み込み時/OnLoadのイベントでコンボボックスにプリンタのデバイス名を追加しています。
‘ フォーム読み込み時のイベント
Private Sub Form_Load()
‘ コンボボックスにプリンタのデバイス名を追加する
fsFillPrinterList Me.cboPrinters
‘ Accessのデフォルトプリンタを選択した状態で表示する
Me.cboPrinters = Application.Printer.DeviceName
End Sub
コンボボックスから選択したプリンタを、Accessのデフォルトプリンタとして設定するには、コンボボックスの更新後処理/AfterUpdateイベントを使用します。このイベントでは、コンボボックスから選択したプリンタを、ApplicationのPrinterプロパティに設定して、デフォルトのプリンタとします。
‘ コンボボックスの更新後処理イベント
Private Sub cboPrinters_AfterUpdate()
‘ コンボボックスから選択したプリンタのインデックス番号取得
lngIndex = Me.cboPrinters.ListIndex
‘ 選択したプリンタをAccessのデフォルトプリンタとして設定する
Set Application.Printer = Application.Printers(lngIndex)
End Sub