|

|
|
 |
19.印刷処理の作成 |
 |
|
|
|
|
|
ここでは、フォーム「アドレス帳メニュー」の[印刷]]ボタンをクリックしたときに、レポート「住所録一覧表」を印刷する処理を作成しよう。
印刷するときは、部数も指定できると便利ですね!というわけで、最初にダイアログで部数を入力し、指定された部数だけ印刷するようにします。
|
|
|
|
|
|
|
|
|
|
レポートを印刷するときはDoCmd.OpenReportを使います。DoCmd.OpenReportは、印刷プレビューも表示することもできます。
まずは、普通に印刷(プリンターへ出力)する方法です。DoCmd.OpenReportの第2引数へacViewNormalを指定します。
DoCmd.OpenReport レポート名, acViewNormal
|
次に、印刷プレビューを表示する方法です。印刷プレビューを表示するときは、DoCmd.OpenReportの第2引数へacViewPreviewを指定します。
DoCmd.OpenReport レポート名, acViewNormal
|
ちなみに、印刷プレビューは自動で閉じることはないので、表示しておく必要がなければ閉じてしまいましょう。印刷プレビュー(レポート)を閉じるときはDoCmd.Closeを使い、第2引数へacReportを指定します。
DoCmd.DoCmd.Close acReport, レポート名
|
ところで、DoCmd.OpenReportで印刷する場合は部数指定が出来ないという欠点があります。もし、印刷する部数指定をしたいときは、レポートを印刷プレビューで表示したあとにDoCmd.PrintOutを使って印刷します。印刷部数は、DoCmd.PrintOutの第5引数へ数値で指定します。
DoCmd.PrintOut acPrintAll, , , , 部数
|
|
|
|
|
|
|
|
|
|
|
ここでは、フォーム「アドレス帳メニュー」のボタン[一覧印刷]へVBAコードを記述します。まずは、フォーム「アドレス帳メニュー」をデザインビューで開いて下さい。
フォーム「アドレス帳メニュー」をデザインビューで開いたら、ボタン[一覧印刷]のイベント「クリック時」へVBAコードを記述する準備を(プロパティウィンドウで「クリック時」を選択し をクリック)しましょう。
印刷処理は、「1.印刷部数の入力」、「2.入力された印刷部数のチェック」、「3.指定された部数を印刷」の順序で処理を行います。
VBAコードを記述したら、印刷処理が正常に動作するか確認してみよう。手順は、フォーム「アドレス帳メニュー」をフォームビューで開き、[一覧印刷]ボタンをクリックしてください。指定した部数だけ住所録一覧表が印刷されればOK。
■イベントプロシージャ「一覧印刷_Click」の作成例
Private Sub 一覧印刷_Click()
'19.印刷処理の作成
'記述先:フォーム[アドレス帳メニュー]/ボタン[一覧印刷]/[クリック時]
'印刷部数
Dim varCopies As Variant
'部数の入力
varCopies = InputBox("部数を数字で入力してください", "印刷部数の指定")
'未入力なら何もしない
If Len(varCopies) = 0 Then
Exit Sub
End If
'部数が数値以外のときや0のときはエラー
If IsNumeric(varCopies) = False Then
MsgBox "部数は数字で入力してください", vbOKOnly + vbCritical, "入力エラー"
Exit Sub
ElseIf CLng(varCopies) = 0 Then
MsgBox "部数は0以上で入力してください", vbOKOnly + vbCritical, "入力エラー"
Exit Sub
End If
'印刷するかを確認します
'ダイアログには部数も表示します
If MsgBox("住所録一覧表を印刷しますか?" & vbCrLf & "部数=" & varCopies _
, vbYesNo + vbInformation, "印刷の確認") = vbYes Then
'「はい」のときはレポートを印刷します
'最初に印刷プレビューを表示
'次に部数を指定して印刷
'最後に印刷プレビューを閉じます
DoCmd.OpenReport "住所録一覧表", acViewPreview
DoCmd.PrintOut acPrintAll, , , , CLng(varCopies)
DoCmd.Close acReport, "住所録一覧表"
End If
End Sub
|
※これは、Access VBAです。
■このプロシージャの解説
ここで、印刷部数の入力を受け付けます。印刷部数を受け取る変数「varCopies」はバリアント型(Variant)にしました。これは、印刷部数の受付でどんな内容が入力されるかわからないからです。バリアント型の変数は、文字や数値などデータ型を問わずどんな型のデータでも入れることが出来ます。
'印刷部数
Dim varCopies As Variant
'部数の入力
varCopies = InputBox("部数を数字で入力してください", "印刷部数の指定")
|
このあたりは、入力された印刷部数のチェックです。何らかの値が入力されているかは、Len関数で長さを調べその結果から判定しています。この例では、0であれば未入力と判定します。また、その内容が数値であることをIsNumeric関数を使ってチェックしています。数値以外の情報が入力されている場合は、メッセージを表示しプロシージャを終了(Exit Sub)します。
'未入力なら何もしない
If Len(varCopies) = 0 Then
Exit Sub
End If
'部数が数値以外のときや0のときはエラー
If IsNumeric(varCopies) = False Then
MsgBox "部数は数字で入力してください", vbOKOnly + vbCritical, "入力エラー"
Exit Sub
ElseIf CLng(varCopies) = 0 Then
MsgBox "部数は0以上で入力してください", vbOKOnly + vbCritical, "入力エラー"
Exit Sub
End If
|
印刷処理を行っています。念のため、印刷前に確認メッセージを表示し、そこで「はい」が選択された場合のみ印刷するようにしています。ちなみに、部数はバリアント型の変数なので、念のため「CLng()」を使って数値型に変換し指定しています。
'印刷するかを確認します
'ダイアログには部数も表示します
If MsgBox("住所録一覧表を印刷しますか?" & vbCrLf & "部数=" & varCopies _
, vbYesNo + vbInformation, "印刷の確認") = vbYes Then
'「はい」のときはレポートを印刷します
'最初に印刷プレビューを表示
'次に部数を指定して印刷
'最後に印刷プレビューを閉じます
DoCmd.OpenReport "住所録一覧表", acViewPreview
DoCmd.PrintOut acPrintAll, , , , CLng(varCopies)
DoCmd.Close acReport, "住所録一覧表"
End If
|
|
|
|
|
|
|
|
|
|
|
印刷処理の作成が終わったら、いったんフォームやVisual Basic Editorを全て閉じ「20.最終設定」へ進みましょう!次の章で、長かったアドレス帳ツールの作成が終了です。
ちなみに、閉じるときは保存も忘れずに…
|
|
|
|
|