• 締切済み

Access2003でインポートをマクロで簡単に自動化したいです。

Access2003でインポートをマクロで簡単に自動化したいです。 今はAccess2003でインポートをマクロにしたい時は、インポートする画面でインポート定義を作っておいて、マクロのテキスト変換でマクロにしています。 これだと、テキスト変換の画面でインポート元のフルパスを指定して、インポート先のテーブルのファイル名を指定しなくてはいけません。 インポート定義を作ってるのだから、定義と同じインポート元、インポート先で簡単にマクロでインポートを自動化する方法はありませんか? マクロにしたいインポートとエクスポートが結構な数あるので、マクロを作る時にいちいちフルパスとファイル名をコピーしてくるのが大変です。 簡単にインポートをマクロにする方法がありましたら、教えてください。

みんなの回答

  • layy
  • ベストアンサー率23% (292/1222)
回答No.3

VBA(=マクロでは「プロシージャの実行」)、をイメージしていたので 同じ定義を違うテーブルへインポートするときは、 DoCmd.TransferText acImportDelim, "インポート定義01", "tbl01", "file.csv", False, "" DoCmd.TransferText acImportDelim, "インポート定義01", "tbl02", "file.csv", False, "" DoCmd.TransferText acImportDelim, "インポート定義01", "tbl03", "file.csv", False, "" DoCmd.TransferText acImportDelim, "インポート定義01", "tbl04", "file.csv", False, "" という感じです。 "tbl01"~"tbl04"の部分を変数にしてしまえばいくらでも、と 思いましたが、これはできませんか?。 "tbl01"~"tbl04"は一つの文字列としてとらえれば 設定テーブルの1項目の値となるので、 これも画面からいろいろ修正するにはいいかな、というところです。 いずれにしてもVBAなら少しは楽になると思います。 ※実際テストはしていないので、頭の中の想定の範囲です。

cde_cde
質問者

お礼

layyさん、お礼が遅くなって申し訳ありません。 3回もご回答下さりありがとうございます。 VBAの詳しい書き方まで載せて下さって、ありがとうございます。 今回は仕事で使うために質問して、仕事を引き継ぎ時の問題もあり、周りのパソコンレベルも考慮すると、VBAは避けたいので今回はVBAを使わないで済ませたいところです。 Access2007みたいに保存済みインポートみたいにインポート定義で簡単にできないかなと思い質問しました。 しかし、教えていただいたVBAの >TransferText acImportDelim の部分を変えれば、エクスポートにも使えそうですね。 VBAは色々応用性が広そうなので、自分用に使う時やそれ以外でもVBAではできないかとAccessだけではなくExcelでも考えていきたいです。 できること(世界)がちょっと広がっていざという時に対処の幅が広がります。ありがとうございました。

  • layy
  • ベストアンサー率23% (292/1222)
回答No.2

マクロ内の「インポート元フルパスやインポート先テーブル名」は固定にして 直前、直後を任意の値に変えるという手もできるかもしれません。 複数あるフルパスやテーブル名も一つの値ですから、 マクロ処理用設定テーブルの1レコードとして作るとか。

cde_cde
質問者

お礼

layyさん。 2回も回答して下さりありがとうございます。 お礼が遅れて申し訳ありません。 > マクロ内の「インポート元フルパスやインポート先テーブル名」は固定にして > 直前、直後を任意の値に変えるという手もできるかもしれません。 インポートのためにTEMP(一時)ファイルを作る方法でしょうか。 今回は後からの参照用のためインポート先が12テーブルに分かれていたりで1つのインポート先、インポート元という手は使えませんでしたが、インポート一時テーブルを作る方法は大変参考になりました。 これからAccessのファイルを作る時に、このインポートはインポート一時ファイルを作ってすませられるのではという視点を持つことができました。ありがとうございます。 > 複数あるフルパスやテーブル名も一つの値ですから、 > マクロ処理用設定テーブルの1レコードとして作るとか。 これはちょっと考えもつきもしませんでした。 仰っていることは、 【テーブルA】 フィールド[テーブル名]   インポート先テーブル名 フィールド[ファイル名]   C:\Documents and Settings\User\My Documents\test.csv としておいて、マクロのテキスト変換でテーブル名、ファイル名の部分がテーブルAのテーブル名、ファイル名を参照するようにしてやればいいのだと私は理解しました。 ちょっとやり方は今はわかりませんが、応用が効きそうですね。フォームでフィールドを書き換えて、違う名前のファイル名も簡単にインポートできたり好きな名前でエクスポートできたり。 新たな視点をありがとうございます。ちょっと世界が広がりました。

  • layy
  • ベストアンサー率23% (292/1222)
回答No.1

マクロをモジュールで保存し、プロシジャでの実行、の動きに変えましょう。 ファイルの指定を変数で与えることができるようになります。

cde_cde
質問者

お礼

cde_cdelayyさん、返信遅くなりまして申し訳ありません。 回答ありがとうございます。 Access2003のインポートマクロを作るのは仕事で使用するため、VBAを持ち込むとうまく引き継げないため、できればVBAを持ち込まないでできると最高です。 Access2007だと保存済みのインポートは、インポート元フルパスやインポート先テーブル名をもう一度書かなくてもインポートマクロを作れるので、「Access2003でもインポート元フルパスなどをいちいち入力しなくてもできるんじゃないか」と考えて、質問しました。 しかし、教えていただいた方法なら1つのインポートマクロだけ作れば、後はコピペでちょっといじれば簡単にできそうで、ためになりました。

関連するQ&A

専門家に質問してみよう