• ベストアンサー

マクロによりテーブルをインポートする際の処理について

マクロの動作によりあるテキストファイル(csv)をテーブルにインポートする際に、そのテキストファイルにない取り込んだ日のフィールドを追加してインポートしたいと思っています。 具体的にはテキストデータが 番号 内容 1 本 2 自転車 3 東京 となっていまして、このテキストデータをマクロ動作によりインポートすれば 日付 番号 内容 5/31 1 本 5/31 2 自転車 5/31 3 東京 というテーブルになるというイメージです。 もう一つがマクロによりインポートする際に読み込むファイル名が text_data_20060531.txt となっていましてフォームのボタンを押すだけで自動的に本日の日付からこのファイル名を指定するにはどうしたらいいのでしょう?マクロの中では決めうちでファイル名を指定しなければならないように見えます。 どなたかご存知の方ご教授ください。

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

  • ベストアンサー
  • O_cyan
  • ベストアンサー率59% (745/1260)
回答No.2

>取り込んだ日のフィールドを追加してインポートしたいと思っています。 簡単な方法はテーブルに日付・番号・内容のフィールドを作っておき日付の既定値を=Date()にする。 そのテーブルに番号・内容をインポートすれば出来ます。 >ボタンを押すだけで自動的に本日の日付からこのファイル名を指定するにはどうしたらいいのでしょう? VBを使わないとできないと思いますが。 インポート定義を作っておきテキストの名前をフォルダ内で探しTransferTextでテーブルにインポートさせる。 Dim MyFile, MyPath, MyName MyPath = "C:\テキストがあるフォルダのフルパス\" MyFile = "" MyFile = MyFile & "text_data_" MyFile = MyFile & CStr(Format(Date(),"yyyymmdd")) MyFile = MyFile & ".txt" '今日の日付のファイル名を作り代入する MyName = Dir(MyPath & MyFile, vbNormal) Do While MyName <> "" If MyName <> ""  '今日の日付のファイルがあれば DoCmd.TransferText acImportDelim, "インポート定義名", "テーブル名", MyName, True 'インポート定義を使ってテーブルにインポートする MyName = Dir Loop ざっと書いてしまいましたがこんな感じで行けると思います。実証はしてません。 前記のテーブルにインポートすれば日付はレコード毎に既定値により作成されます。

goroneko-begin
質問者

お礼

ありがとうございます。 参考になります。やってみます。

その他の回答 (1)

  • ipsum11
  • ベストアンサー率21% (55/251)
回答No.1

まず最初の質問について。 取り込んだ日の日付を追加したいのであれば、1レコードずつテーブルにINSERTするしかないかなと思います。 まず最初のレコード(1 本)を読み込んでテーブルに取り込んだ日の日付を追加しながらINSERTする、次のレコードへ、と言ったイメージです。SQLでやると言う事です。 「Insert テーブル名 Values (5/31, 1, 本)」:フィールドが3つの場合 次の質問について。 お使いのソフトが何かわからないのですが(ACCESSかEXCELかな?)、今日の日付を取得する関数があるはずですので(Today()等)、 「"text_data_" & 取得した日付 & ".txt"」 見たいな感じで編集してやればできると思います。

goroneko-begin
質問者

補足

ご回答ありがとうございます。 SQLでやる事はなるほどと理解しましたが、具体的にどこにどういった形でセットするのかが理解できていません。試行錯誤でやってみます。光は見えてきたような気がします。 >お使いのソフトが何かわからないのですが(ACCESS >かEXCELかな?)、今日の日付を取得する関数がある >はずですので(Today()等)、「"text_data_" & >取得した日付 & ".txt"」見たいな感じで編集して >やればできると思います。 Accessでマクロのインポートで設定したときのファイル名のところです。関数が使えないような感じなのです。必ずしもマクロを使わなくてもいいのですが・・・。 取り急ぎ、お礼まで。

関連するQ&A