アプリ版:「スタンプのみでお礼する」機能のリリースについて

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

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

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


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

A 回答 (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のデータ型に合わせて確認下さい。
    • good
    • 0

AccessをやめてFilemakerにすると難しいVBAの勉強しなくても


簡単にできますよ。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!