【AccessVBA】フォームに入力した情報をレポートに渡す方法サンプル

Access

DoCmdオブジェクトのOpneReportメソッド内の「OpenArgs」を利用します。初めて知ったときはかなり感動したことを覚えております。これを知る前までは、レポート上のマクロでフォームの値を直接参照させるという方法を私は取っていました。

フォームに入力した情報をレポートに渡す方法です。フォームの情報を元にレポート上で処理を分岐する際などにも利用できると思います。
今回のサンプルは、フォームに入力した文字列をレポートに反映しています。

目次

OpenArgs実装サンプル

サンプルのAccessDBの構成は次の通りです。
【フォーム】F_sample 
コマンドボタン内にテキストボックスの値をレポートに渡す
【説明】レポート「R_sample」を開く際に、フォーム上のテキストボックスの値(txt_args)を引数:OpenArgsにセットする

Private Sub cmd_print_Click()
 DoCmd.OpenReport “R_sample”, acViewPreview, , , , Me.txt_args
End Sub

【レポート】R_sample
受け取った値(OpenArgs)をレポートのヘッダーにセットする
【説明】Me.OpenArgs で、フォームから受け取った値を利用します。例では、レポートのラベルに受け取った文字列をセットしています。

Private Sub Report_Load()
 Controls(“lab”).Caption = Me.OpenArgs
End Sub

レポート渡しを使う局面

フォームからレポートへの値を渡す方法は次のような時に利用できるでしょうか

  • フォーム上の選択結果でレポート上の表示・非表示を切り替える
  • レポートのプリンタやプレビュー・印刷モードを切り替える
  • フォーム上の文字列をレポートに設定する

など、ReportのOpenイベント上でifなどで条件分岐をさせることで、柔軟な処理が出来ると思います。

フォームに入力した情報をレポートに渡すサンプルAccessファイル

OpenArgsを使ったレポートからフォームへの値を渡すサンプルVBAが含まれたファイルはここからダウンロードしてください。

応用例

フォーム上で「OpenArgs」に渡す値を配列型にすることで、複数の値をレポートに渡すことも可能です。



よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

目次
閉じる