こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

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

Access2007を使用して台帳管理を行っています。
その際にレポートをPdf化して電子保存を行っていますが、いちいちメニューからレコード指定しでファイル出力するのが煩雑なのでVBAを勉強して自動化しようと思っています。

実装したい機能はフォーム上に配置されたボタンを押したら、そのIDのレポート(PDFファイル)が指定のフォルダに保存されるものです。

初心者なりにいろいろ調べて下記のコードに行きついたのですがうまくID選択されません(全レコード保存される)。
ご教授お願いします。


Sub Pdf作成()
DoCmd.OpenReport "レポート名", acViewPreview, , "ID=" & Me!ID
DoCmd.OutputTo acOutputReport, "レポート名", acFormatPDF, "保存path&ファイル名.pdf"
End Sub

投稿日時 - 2013-11-17 14:25:58

QNo.8350902

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

15人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.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のデータ型に合わせて確認下さい。

投稿日時 - 2013-11-18 15:17:42

ANo.1

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

投稿日時 - 2013-11-18 09:42:15

あなたにオススメの質問