使用MS Access 2010
以前から何度かここでお世話になっております。よろしくお願いします。
「受注一覧」という表形式フォームに日々の受注客百件程度が表示されています。レコードのフィールドに[ID]という受注IDコードがあります。
受注確認のメールにPDFの添付ファイルを作成するための「受注確認PDF」というレポートがあり、
それを使って"受注確認書(受注ID:" & [ID] & ")"というファイル名で"C:\PDF"フォルダーに一件(1ページ)づつ保存するボタンを作成する必要に迫られておりますが、ネットでいろいろ調べて、もう少しというところでなかなうまくいきません。
「受注一覧」フォーム上のボタンに レポートを開くマクロの実行(2000回)-次のレコード としたマクロを登録し、「受注確認PDF」レポートの”開くとき”イベントに
Private Sub Report_Open(Cancel As Integer)
DoCmd.OutputTo acOutputReport, "受注確認PDF", acFormatPDF, "C:\PDF"
Reports!受注確認PDF.Caption = "受注確認書(受注ID:" & [ID] & ")"
と書きました。
マクロは上から順にPDFは開いているようなのですが、フォルダーにはPDFが一枚も保存されません。
どうも開いているだけで保存されないようです。
またマクロも最後のレコードになったときのアクションを書いていないため、「次のレコードがありません」というエラーメッセージで終わります。
フォーム上の全件を"受注確認書(受注ID:" & [ID] & ")"という名前で"C:\PDF"に別々にPDFで保存し、最後のレコードになったら完了するVBAを完成したいのですが、どなたか助けていただける方がいたらお願いいたします。当方、VBAは見よう見まねで書いているだけで意味はあまり理解できないレベルです。
No.1ベストアンサー
- 回答日時:
間違いがいくつかあります。
DoCmd.OutputTo acOutputReport, "受注確認PDF", acFormatPDF, "C:\PDF"
上記のコードで、出力ファイル名が指定されていない。
ちゃんと拡張子も含めてファイル名を指定する必用があります。
さらにファイル名には、: は使用できません。
レポートを開くときのイベントでOutputToを実行してますが、このイベントではOutputToは実行できません。フォーム上のボタンのイベントプロシージャで OutputTo を実行しましょう。
「一件(1ページ)づつ保存する」ということですが、具体的にはどのように1件だけ抽出しているのでしょうか。レポートのレコードソースをパラメータクエリにしているのでしょうか。それともレポートを開くアクションで Where条件式を設定しているのでしょうか。
パラメータクエリで、受注一覧フォームの受注IDを参照しているとして回答します。
また、マクロとイベントプロシージャを混在させるのは煩雑ですので、イベントプロシージャのみで記述します。
受注一覧フォーム上のコマンドボタン(コマンド1)のクリック時のイベントプロシージャ
Private Sub コマンド1_Click()
DoCmd.GoToRecord acActiveDataObject, , acFirst
Do
If Me.Recordset.RecordCount = Me.CurrentRecord Then
MsgBox "最終レコードまで出力しました。"
Exit Sub
End If
DoCmd.OutputTo acOutputReport, "受注確認PDF", acFormatPDF, "C:\PDF\受注確認書(受注ID " & Me.顧客コード & ").pdf"
DoCmd.GoToRecord acActiveDataObject, , acNext
Loop
End Sub
この回答への補足
hatena1989様
ご連絡が遅くなり、申し訳ありません。
出来ました!完璧です!ありがとうございました。
私のレベルだとすべての記述を理解するのは困難ですが、少しずつ勉強していきたいと思います。
またご相談すると思いますのでその時はよろしくお願いします。
hatena1989様
早速のご回答ありがとうございます!
>パラメータクエリで、受注一覧フォームの受注IDを参照しているとして回答します。
はい、そのとおりです。
ただいま帰宅してしまったため、明日出社次第ご教授いただいた記述でチャレンジしてみます。ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
準・究極の選択
「年収1000万円で一生カレーライス」か 「年収180万円で毎日何でも食べ放題」 あなたはどちらを選びますか?
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
Acccess レポートをグループ別に出力する
Visual Basic(VBA)
-
ACCESS2010 レポートを分割しPDF化
Access(アクセス)
-
AccessのレポートからPDFをページ毎に作成
Access(アクセス)
-
-
4
Access2013でレポートを名前を付けて一括PDF化する方法
その他(データベース)
-
5
Access2007でページ毎にPDFを出力したい
その他(Microsoft Office)
-
6
AccessでPDFを複数ファイルにして出力
Visual Basic(VBA)
-
7
AccessVBAでレポートをPDFで出力
Visual Basic(VBA)
-
8
ACCESSレポートをPDFに出力したい
その他(OS)
-
9
accessのレポートであとから他のテーブルのフィールドを追加する方法
Access(アクセス)
-
10
accessのレポートで元になるテーブルの変更
Access(アクセス)
-
11
Accessで文字列の長さによって、フィールドの幅を自動で合わせる方法
Excel(エクセル)
-
12
ACCESS 「パラメータの入力」を消したい!!
Access(アクセス)
-
13
Accessのレポート上のテキストボックス値を設定したい
その他(データベース)
-
14
アクセスのフォームで、文字を中央揃えにしたい
Access(アクセス)
-
15
Access VBA を利用して、フォルダ内のファイルの名称を変更したい
Access(アクセス)
-
16
Access レポート印刷するときに1ページに収める方法
Access(アクセス)
-
17
AccessからExcelのファイルを起動する
その他(データベース)
-
18
アクセスのレポートに、フォームで算出した数字を表示させたい
Access(アクセス)
-
19
ACCESSのコンボボックスで入力した値がTABLEに反映されずに数字がでます
Access(アクセス)
-
20
Access フォームのテキストボックスに半角英字のみで入力する設定は
Access(アクセス)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Accessフォーム全レコードをPDF...
-
usingの意味がわからないのですが
-
【Accessクエリ】存在しないデ...
-
あるフィールドの最大値を条件...
-
Excel 2019 のピボットテーブル...
-
「直需」の意味を教えてください
-
エクセルVBAで5行目からオート...
-
Oracle 2つのDate型の値の差を...
-
Access テキスト型に対する指定...
-
Accessでテーブル名やクエリ名...
-
変数が選択リストにありません
-
必須入力項目と入力必須項目
-
ACCESSのクエリで集計で、先頭...
-
INSERT INTO ステートメントに...
-
Accessのフィールド数が255しか...
-
ACCESSでテーブルのチェックを...
-
セルの右クリックで出る項目を...
-
VBAで複数の数式セルを最終行ま...
-
Accessでテーブルの値をテキス...
-
アクセス エラーを数値「0」に...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
アクセスのテーブルを分ける理...
-
Accessの帳票フォームで重複デ...
-
Accessフォーム全レコードをPDF...
-
Access2021 「ISNULL関数には引...
-
あるフィールドの最大値を条件...
-
ACCESS VBA クエリを開く
-
MS ACCESS 商品価格変更時の該...
-
曜日を表す項目
-
集計結果を別テーブルに更新ク...
-
【Accessクエリ】存在しないデ...
-
usingの意味がわからないのですが
-
SQL EXISTS演算子について
-
Accessについて(DLOOKUP関数、...
-
【Access2000】マシンIDの取得方法
-
正規形の定義
-
Accessでクエリの作成、多対1対...
-
accessでの請求管理について
-
請求先
-
どうやって正規化するかを教え...
-
SQLの作り方
おすすめ情報