AccessレポートのレコードソースをVBAで修正

スポンサーリンク

AccessレポートのレコードソースをVBAで修正する方法についてご紹介します。

基本的にレポートのレコードソースは、テーブルだったりクエリーで使用することが多いですが
クエリーのメリットは、SQLを視覚的に操作して作れるのがメリットとなります。
しかし便利な反面、デメリットもあります。
例えば、テーブルの項目名を変更したり追加・削除の際に、
同様に参照しているクエリーを全部修正しないといけないので、メンテナンスが難しくなってしまうのです。

よってクエリーの多用は厳禁です。
また、クエリーとテーブルの設計書を作成しておくと、後々メンテする際に良いです。
特にクエリーがどのテーブルのどの項目を参照しているとわかっていると便利です。

前置きはこのくらいにしまして、本題に入ります。

レポートのレコードソースをVBAで修正

DoCmd.SetWarnings False

'レポートのレコードソース編集
DoCmd.OpenReport "R_XXX通知書", acViewDesign
Reports("R_XXX通知書").RecordSource = "社員テーブル2025"

DoCmd.Close acReport, "R_XXX通知書"
DoCmd.SetWarnings True
コード解説

1行目
DoCmd.SetWarnings False

SetWarnings はシステムメッセージをOF(非表示)にするものです。

VBAでレポートをデザインモードで開いて修正したり閉じる際に
メッセージが表示されるのを防ぐために記述します。
true falseの意味としては、yes no と同じ意味合いです。はい、いいえ
ワーニングメッセージをfalseにしているので表示しない指示になります。

4行目
DoCmd.OpenReport "R_XXX通知書", acViewDesign

レポートをデザインモードで開いています。

開く理由はレコードソースを設定したいからです。
手動で普段レポート>デザインで修正すると思いますが
これをVBAで行うことによってボタン1本でできてしまうという事です。

5行目
Reports("R_XXX通知書").RecordSource = "社員テーブル2025"

レポートのレコードソースを変更しています。

Accessイメージ

Accessレポートをデザインビューで開いてプロパティを開くとレコードソースの項目があります。

ここをテーブルやクエリーに指定するとレポートが表示されますが
レコードソースは基本的に固定で行うことが多いため、VBAで自動的にレコードソースを
セットしてあげることによりわざわざ手動でレコードソースを変更しなくても良いようにしました。

代案(1)

テーブルは1つのものを使用していくのが良いのかもしれませんが
用途はそれぞれなので、例えばレポート用のテーブルを作成しておいて
条件(日付)で出力条件に満たしたもののみをレポート用のテーブルに値をセットして
レポート表示するという手もあります。

代案(2)

また、レポートを使用しないでExcelテンプレートを使用することも可能です。
1つExcelのテンプレートを用意しておき、所定のセルにテーブルの値をセットして別名で出力する。
それを繰り返すことで大量の出力が可能となります。
Excelを非表示で起動して操作して出力だけすることが可能なので、
Excelテンプレートを使用したPDF出力も非常に便利な機能となります。

コメント

タイトルとURLをコピーしました