質問: Access2010を使用中です 毎日、システムから取込んだCSVをツールにインポートしその日分の抽出データをフォームでエリアごとに選択し [エリア]+[日付].PDFで指定フォルダに保存しています。 **現状の流れ** 1)フォームのコンボボックス(リスト)から「○○エリア」を選択→実行 2)エリアで抽出されたクエリ、レポート表示 3)レポートのボタンでPDFに出力し指定フォルダーに保存。 4)閉じるボタンでクエリ、レポートを閉じさせフォームに戻り、各エリア(12)ごとに同作業を繰り返す。 リストの例: 中央1;中央2;東1;東2;南1;南2;北1;北2;西1;西2;西3;西4 **望むべき姿** 1)コンボボックスに作ってある12エリアを実行ボタンひとつで同じように指定フォルダに保存。 ※繰り返しの作業を1クリックですべてのエリアを出力し時短化をしたい。 以上となります。 よろしくお願い致します。 **追記** Accessオブジェクト ※作動関連の一部 T_基礎データ F_エリア選択 Q_抽出作成 <抽出条件> DMax("受付日","データ","エリア='" & [エリア] & "'") [Forms]![エリア選択]![cmbエリア] 実行ボタン(出力) Private Sub 実行_Click() 'レポートをデータベースウィンドウから選択します DoCmd.SelectObject acReport, "Q_抽出作成", acViewPreview '[PDF]メニューを実行します DoCmd.OutputTo acOutputReport, "Q_抽出作成", acFormatPDF, "○○\" & [エリア] & Format(Date, "yyyymmdd") & ".pdf"
回答: 具体的なところはコードを提示していただかないと的確なアドバイスができませんが、実現方法としては以下のような流れになるのではないかと思います。 ``` 'リストボックス内の項目数分ループ処理 For idx = 0 to Listbox1.Count -1 '1初期化処理(連続処理するにあたり前回の処理結果を引きずらないよう、必要に応じて変数やテーブルのクリアを行う) '2リストボックスを選択する Listbox1.index = idx '3データ抽出(実行ボタンの処理を行う。または必要な処理のみ流用する) Button1.Click '3PDF出力(抽出したデータをもとに帳票をPDFとして出力する) DoCmd.OutputTo acOutputReport, "レポート名", acFormatPDF, "PDFファイル名.pdf" '4次の処理を行うための準備(作成データのクリアなど。閉じるボタンで行っている処理を参考に、連続処理に必要なものを行う。) Next ``` このような処理をフォーム上に新たに追加した「連続実行」ボタンなどの処理として作成すれば、とりあえず目的の動作となるのではないでしょうか。 かなりアバウトなアドバイスなうえ、机上で作成したコードなのでそのままでは動かない部分もあると思います。 適宜手直ししてください。 具体的なテーブル構成などがわかればより効果的なアドバイスができるかもしれませんが、現時点では実現方法ひとつとして、参考になれば幸いです。