• 締切済み

Access2007レポート特定レコードのPdf化

Access2007を使用して台帳管理を行っています。 その際にレポートをPdf化して電子保存を行っていますが、いちいちメニューからレコード指定しでファイル出力するのが煩雑なのでVBAを勉強して自動化しようと思っています。 実装したい機能はフォーム上に配置されたボタンを押したら、そのIDのレポート(PDFファイル)が指定のフォルダに保存されるものです。 初心者なりにいろいろ調べて下記のコードに行きついたのですがうまくID選択されません(全レコード保存される)。 ご教授お願いします。 Sub Pdf作成() DoCmd.OpenReport "レポート名", acViewPreview, , "ID=" & Me!ID DoCmd.OutputTo acOutputReport, "レポート名", acFormatPDF, "保存path&ファイル名.pdf" End Sub

みんなの回答

  • psgrade
  • ベストアンサー率86% (19/22)
回答No.2

DoCmd.OutputToは、使用したことはありませんが、レポートのRecordSourceとして、"ID=" & PubIDReturn()をWhere条件にしたQueryを指定すれば良いと思います。 フォームのテキストボックスで、PDF化したいIDを指定し、このIDで絞り込まれたレポートをPDFに出力させます。 フォーム上のボタンで操作するなら、次のようにVBAを組むことが考えられます。 モジュールオブジェクトで、Public PubID as Longとグローバル変数宣言します。 次に、このグローバル変数を返す関数PubIDReturn()を定義します。 Public PubID As Long Public Function PubIDReturn() As Long PubIDReturn = PubID End Function 次にIDを指定するフォームで、実行ボタンのクリック時イベントに次のようなモジュールを作成します。 Private Sub コマンド0_Click() If IsNull(Me![ID]) Then MsgBox "IDを指定して下さい" Exit Sub End If PubID = Me![ID] DoCmd.OutputTo acOutputReport, "レポート名", acFormatPDF, "保存path&ファイル名.pdf" End Sub レポートに設定するQueryは次のように設定します。 SELECT * FROM テーブル1 WHERE (((テーブル1.ID)=PubIDReturn())); これで如何でしょうか? IDは、オートナンバー型を仮定しています。 実際のIDのデータ型に合わせて確認下さい。

  • chieffish
  • ベストアンサー率44% (1149/2554)
回答No.1

AccessをやめてFilemakerにすると難しいVBAの勉強しなくても 簡単にできますよ。

関連するQ&A