ACCESS フォームに印刷ボタンを作成する方法
ACCESSではフォームで入力した内容を、レポートに出力する機能をよく作成します。
その際に利用するのが、フォームの印刷ボタンです。
印刷ボタンを押すことで、フォームで表示しているレコードのレポートを印刷する機能をVBAで作成することが可能です。
今回は、フォームに印刷ボタンを作成する方法をご紹介します。
こんにちは。
はこにわガジェット (@hakoniwagadget) です。
ACCESSを使った売上管理、顧客管理などのデータベース開発を行っています。
ACCESSは使いこなすために少しスキルが必要なものの、うまく活用すればExcelよりも業務の効率化が図れます。
この記事ではACCESSで実際に作成したフォームやレポートを、その作成方法と共にご紹介していきます。
印刷ボタンの完成形
最初に、フォームに配置した印刷ボタンの完成形を見てみましょう。
以下は、売上伝票の入力フォームです。
下段に「領収書」ボタンを配置しています。
このボタンを押すと、現在表示しているレコードの内容をレポートで出力します。
このように、フォームで表示しているレコードの入力内容を、対応するレポートに出力する機能は非常に有用でACCESSではよく利用されます。
今回は、こちらの機能の作り方を見ていきましょう。
フォームの準備
まずはフォームを準備します。
フォームはデザインビューで作成しましょう。
先ほどのフォームをデザインビューで見ると以下のようになっています。
様々なオブジェクトが配置されており複雑に見えますが、今回のように表示されたレコードをレポートで印刷したい場合に注意するポイントは一つです。
それは、フォームのビューを「単票フォーム」で作成することです。
フォーム全体のプロパティシートを見てみましょう。
書式タブの既定のビューが「単票フォーム」になっていれば大丈夫です。
単票フォームとは、フォームの1画面にレコードソースの1レコードを表示する形式のフォームです。
一方、フォーム1画面で複数のレコードを表示する一覧表のような形式は「帳票フォーム」となります。
今回は、表示されたレコードをレポートに表示するために単票フォームを指定しているのです。
レポートの準備
次にレポートを準備します。
同様にレポートデザインで作成します。
デザインビューでは以下のようになっています。
こちらで注意する点は、フォームのキー値(今回の場合は売上ID)をレポート側にも持たせておくことです。
こうすることでフォームで指定したレコードと同じレコードをレポート側でも指定することが可能になります。
印刷ボタンの機能をVBAで作成する
では、フォーム側に印刷ボタンを作成しましょう。
フォームをデザインビューで開き、ボタンを設置します。
上段のメニューの「フォームデザイン」タブの中にボタンのアイコンがあるので、こちらからボタンが作成できます。
ボタンを作成した後は、名前を正しく修正しておきましょう。
今回は領収書_ボタンとしています。
さらに、ボタンを選択した状態でプロパティシートの「イベント」タブからクリック時にイベントプロシージャを設定します。
クリック時の行の一番右の「…」ボタンを押した後、ビルダーの選択で「コードビルダー」を選択しましょう。
すると、Visual Basic Editor(VBE)が起動します。
この画面でVBAのプログラミングを実施します。
今回は、以下のようにイベントプロシージャを設定しました。
Private Sub 領収書_ボタン_Click()
DoCmd.OpenReport "領収書", acViewPreview, , "売上ID = " & Me!売上ID
End Sub
DoCmd.OpenReportを利用して、レポートを表示する処理を作成しています。
DoCmd.OpenReportは以下の構文で利用します。
DoCmd.OpenReport レポート名 , ビュー , フィルター名 , 抽出条件 , ウィンドウモード , OpenArgs
今回の場合は、1つ目の引数であるレポート名に「領収書」と指定して、領収書レポートを開いています。
2つ目の引数のビューは「acViewPreview」で、これは印刷プレビューで開くという指定です。
そして難しいのが4つ目の引数の抽出条件です。
今回は、
"売上ID = " & Me!売上ID
と指定しました。
これは、左辺の売上IDは開くレポート、つまり「領収書レポート」の売上IDを示しています。
一方で右辺のMe!売上IDは領収書ボタンが配置されたフォーム「売上伝票入力フォーム」の売上IDを指しています。
そのため、領収書レポートを開く際に、その売上IDは、売上伝票入力フォームで現在表示している売上IDと同じものを表示しなさい、と指示しているわけです。
この記述方法は非常によく利用しますので覚えておきましょう。
これで領収書ボタンからレポートを印刷するためのイベントプロシージャの作成が完了です。
DoCmd.OpenReportについてはこちらの記事で詳しく紹介していますので、興味がある方はご覧ください。
以上、フォームに印刷ボタンを作成する方法をご紹介しました。
ACCESSを使いこなせば、業務の効率化や自動化が実現できます。
しかし、自分でACCESSを学ぶには時間がない、難しそうで不安、という方も多いでしょう。
そんな時は、ACCESS開発歴20年以上、過去に100以上のACCESSデータベースを開発してきた私(@hakoniwagadget)にお任せください。
ACCESSの新規開発、既存のACCESSの修正、ACCESSの操作レッスンなど様々なサービスをご提供しています。
ご興味のある方は下記のサービス一覧をご覧ください。
最後までお読みいただき、ありがとうございました。