フォームの読み込み時に発生するイベントに処理を記述、当記事ではプリンタ選択フォームを作成 フォームが読み込まれる際に発生するイベント 規定のプリンタは以下のように記述して表すことができる 規定のプリンタ名はというと、以下のように記述する フォームの起動とともに、フォーム内に設置したリスト「lst1」に、使用できるプリンタ一覧を出すには 次に、「印刷」ボタンを押したら印刷するかどうかを聞くメッセージを表示し、「はい」の押下で印刷を行うよう記述
イベント【Load】とは
実際はLoadイベントだけではなく、Open→Load→Activeの順でイベントが発生する
※キャンセルができるのはOpenイベントのみ
※アクティブになったウィンドウにActiveイベントが発生
起動時に必要な処理はLoadに記述し実行させる
使えるプリンタの一覧をリストに表示
Application.Printer
Application.Printer.DeviceName
Loadイベントモジュール内に、以下のように記述
▼記述例▼Private Sub Form_Load()
Dim PList As Object
For Each PList In Application.Printers '「s」がつくことに注意
Me.lst1.AddItem PList.DeviceName
Next
Me.lst1.value = Application.Printer.DeviceName '規定のプリンタにフォーカス
▼ここまでの処理結果▼
ボタンを押下~印刷実行まで
▼記述例▼Private Sub btn1_Click()
Dim MyPrinter As Object
If MsgBox("選択されたプリンタで印刷しますか?", vbYesNo) = vbYes Then
Set MyPrinter = Application.Printer '既定のプリンタを「MyPrinter」に格納しておく
Set Application.Printer = Application.Printers(Me.lst1.Value) '選んだプリンタを規定のものとする
DoCmd.SelectObject acReport, "月間売上表"
DoCmd.PrintOut acPages , 1 , 2 , adHigh , 5 , True '2ページ目までを5部、部単位で印刷
Set Application.Printer = MyPrinter '既定を元のプリンタに戻す
Set MyPrinter = Nothing 'リセット
End If
End Sub
▼メッセージボックス表示までの処理結果▼
リストに表示されている通り、紙を印刷するプリンタ機器は家にない(「Fax」て出たけどなんだろ…)