• ベストアンサー

AccessにてExcelファイル名にパラメーター情報を追加

初めての投稿となります。 よろしくお願いいたします。 Accessにて年月日をパラメーター入力すると、該当年月日のDATAを抽出するクエリを作成しました。 現在はマクロにて自動的にデスクトップに該当DATAをExcelファイルに変換は出来るようになっておりますが、自動的にそのExcelファイル名の頭に入力したパラメーター情報を追加したいのですが、どのようにすれば出来るのでしょうか? 現在のファイル名: 情報.xls 自動作成時希望ファイル名:20090415情報.xls [20090415]がパラメーター入力情報です。 どうぞ宜しくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17070)
回答No.1

VBAになれた方なら、VBAでSQL文を作って実行するようなやり方をするでしょう。 ーー あえてそれに踏み込まず、 もう少し簡単に出来る方法を述べてみます。 Moduleに、ですが Sub test02() x = InputBox("年月日") MsgBox x 'DoCmd.OpenQuery "クエリ1" DoCmd.TransferSpreadsheet acExport, 8, "クエリ1", "C:\Documents and Settings\xxxx\デスクトップ\" & x & "名簿原本.xls", False End Sub (xxxxは自分のユーザーIDなどの質問者の実情に合わせること) と入れて、実行します。 年月日を聞いてきます。文字列で入れます。年月区切りに/を入れる方式はうまくいかなかったので、20090416のようにしてテストした。 上記クエリ1は私の場合、パラメータクエリで、パラメータを聞いてきますから入れます。私の場合は条件は年月ではなかったですが。 これでデスクトップに検索(選択)結果のデータのエクセルファイルが出来ました。シート名はクエリ名。 クエリを作るとき、表示フィールドが2度同じものを指定しないようにします(重複した・・のエラーが出ますから。私は出しちゃった) ーーーー 上記を実行したとき聞いてきた年月日が、質問者の場合、クエリのパラメータで有るようです。クエリ1に上記xの文字列をプログラムで渡せればよいのですが、不可能ではないかと(現状小生には判りません)思います。 簡単さを求めた(アクセスのマクロを使おうとしたため)ためですが、重複入力がイヤならこの回答は無視してください。 VBAでSQLを扱う方式を勉強してください。

rikuttci
質問者

お礼

アドバイス有難うございます。 早速試してみます。

その他の回答 (1)

  • DexMachina
  • ベストアンサー率73% (1287/1744)
回答No.2

> [20090415]がパラメーター入力情報です。 このパラメータですが、クエリのデザインビューの『抽出条件』 部分に『[年月日]』といった形で入力を要求するようにしている、 ということでよろしいでしょうか。 だとすると、マクロからその値を参照するのは難しいと思います。 (少なくとも私は(VBA使用時を含めて)その方法を知りません(汗)) ですので、Excelファイルを作成するマクロを設置したフォームに テキストボックスを追加し、その値を、「クエリの抽出条件」と 「ファイル名」に使い回す、という代替案を提案します。 具体的には、以下の通りです(フォーム名が「フォーム1」、 テキストボックス名が「年月日」だった場合): 【クエリ】  <現在の抽出条件の式>   [年月日]  <変更後の抽出条件の式>   [Forms]![フォーム1]![年月日]   (パラメータ入力ダイアログは表示されなくなります) 【マクロ】  a)『アクション』に「出力」を指定している場合:  ※この場合は、AccessのバージョンによってはExcel5.0という   古いExcelの仕様に従っているらしく、16000行程度までしか   出力されないので要注意。  <現在の『出力ファイル』欄の式>   c:\~~\情報.xls  <変更後の『出力ファイル』欄の式>   ="c:\~~\" & Forms!フォーム1!年月日 & "情報.xls"  b)『アクション』に「ワークシート変換」を指定している場合:  <現在の『ファイル名』欄の式>   c:\~~\情報.xls  <変更後の『ファイル名』欄の式>   ="c:\~~\" & Forms!フォーム1!年月日 & "情報.xls" ※拡張子を省略すると、「出力」アクションでは拡張子なしで、  「ワークシート変換」アクションでは『ワークシートの種類』  欄で指定したものに対応する拡張子が追加された状態で、  それぞれ出力されるようです。  (WinXP・Access2003での確認結果)

rikuttci
質問者

お礼

詳しくアドバイス頂き有難うございます。 早速試します。

関連するQ&A