レポートをPDFファイルにエクスポートしたい場合に使う「OutputTo」メソッドの構文は次のようになっています。
DoCmd.OutputTo acOutputReport, <レポート名>, acFormatPDF, <PDFファイルのパス> ~~以下略
レポートをプレビュー・印刷する「OpenReport」メソッドとは異なり、レコードソースに抽出条件を指定する引数はありませんので、すべてのレコードを出力することになります。
そのようなとき、レポートのレコードソースとなるクエリのSQL文を事前にVBAで書き換えたり、レポート内のモジュールで抽出条件を都度変更したりといった方法もありますが、ここではクエリやレポートは一切変更せず、”レポートを開く側のプログラム”で動的に都度抽出条件を切り替えてみます。
それには、次のようなコードを実行します。ここでは「R_名簿」を「D:\名簿.pdf」にエクスポートしています。
With DoCmd
.OpenReport "R_名簿", acViewPreview, , <抽出条件>, acHidden
.OutputTo acOutputReport, "R_名簿", acFormatPDF, "D:\名簿.pdf"
.Close acReport, "R_名簿"
End With
ポイントは、『(1)抽出条件を指定してレポートを(2)非表示で(3)プレビューし、そのまま続けて(4)PDFファイルにエクスポートする』ことです。
- 「OpenReport」メソッドの4番目の引数、<抽出条件>となっている部分に、実際には都度異なるWHERE式を設定します。
- あくまでもPDFファイルにエクスポートするのが目的ですので、プレビューをユーザーに見せる必要はありません。そこで、「OpenReport」メソッドの5番目の引数に「acHidden」を指定しています。
- 抽出条件を反映させたレポート内容をエクスポートするために、いったんレポートをプレビューのモードで開きます。・・・2番目の引数に「acViewPreview」を指定
- PDFファイルにエクスポートする、本来の「OutputTo」メソッドを実行します。
- 後処理として、非表示で開いたレポートを閉じておきます。
|