• ベストアンサー

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

マクロの動作によりあるテキストファイル(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

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

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

  • Access2000のテーブルのインポートについて

    現在、マクロのテキスト変換を使用して5件のテーブルを、毎日インポートさせているのですが、新しいデータをインポートするたびにデータが重複してしまいます。 理想は、新しいデータをインポートするたびにすべて上書きされる様にしたいのですが、どなたか教えていただけないでしょうか。 どうぞよろしくお願いいたします。

  • アクセス 自動インポートマクロで

    アクセス 自動インポートマクロで以下のようなものを作りました。 (1)テーブル「人事データ」をテーブル「人事データ(前回分)」としてコピー (2)エクセル「人事データ」をテーブル「人事データ」としてインポート (3)テーブル「人事データ」と「人事データ(前回分)」の不一致をクエリで抽出 (4)エクセルに出力 そこで、(2)の項目でインポートする際に、「人事データ040325」といったように後ろに日付をつけることはできますか? どこまでインポートしたか履歴を知りたいためです。

  • ACCESSでのインポート処理の自動化

    ACCESS2002を使用して、CSVデータをもとにリストを作成するMDBを作成しました。 このCSVデータは不定期に更新され、更新するごとに新しいファイル名がついて準備されます。 今、マクロを使ってインポートの設定をしようと思ったんですが、ファイル名をきっちり指定しないとできないので、今回のように、そのつど、ファイル名が変わる場合はどのように設定をしていいのかわかりません。 私の希望としては、該当のフォルダを開くとこまでをマクロか何かでして、ファイルの選択は利用者にしてもらって、その後は自動的にインポート定義に基づいてインポートされるようにしたいんです。 こういうことは簡単にできないものでしょうか? VBとかもあまり使ったことがないので、マクロとかで指定できればそのほうが助かります。

  • ファイルメーカーでインポートの際、日付範囲指定できますか?

    ファイルメーカーPro7で、ファイル→レコードのインポート→ファイルの手順で、同じファイル内のテーブルを違う定義のテーブルにインポートする場合に日付データがある場合は日付の範囲指定をしてデータをインポートすることが出来るのでしょうか? またこの作業をスクリプトでボタン設定したいのですが可能でしょうか? 宣しくご指導下さい。

  • ACCESS2007 インポートするマクロでファイル指定

    ACCESS2007を使用しています。 tblにインポートするマクロを作成しようと思っているのですが、入力ファイルをパラメータのように与えることはできるのでしょうか。 できるのならば、その方法を教えてください。 マクロのアクションに「テキスト変換」で引数の箇所で、ファイルを指定しますが、これはFIXしたファイル名を指定しなければいけないようなので無理なのかなとは思っていたりしてます。 よろしくお願いします。

  • Access csvの取込 ファイルは任意でテーブルは指定したいのですが?

    Access初心者です。2003を使用しています。 csvをマクロの「テキスト変換」で取り込ませています。取り込み時に定義どおりのテーブルを作成してくれるので、追加クエリを使い作業用テーブルに移動させ、処理にはそちらを使う仕組みにしています。 csv → データ用テーブル → 作業用テーブル(実際使うテーブル) csv取り込みには「テキスト変換」マクロでファイル名にパスを設定していますが、この部分を固定パスではなく任意に指定できるようにしたいのです。(取り込みたいcsvが決まったパス、ファイル名で無い場合があります。) 「コマンドの実行:インポート」ですとダイアログが出て任意に取込ファイルが指定できますが、インポートウィザードが起動してしまいます。使用者がウイザードで適切な定義を選びデータ用テーブルを作成してくれればいいのですが、私がツールを作りPCに詳しくない人が使うのでインポートウイザードを避けたいと考えます。 どなたか、マクロ「テキスト変換」でファイル名をダイアログなどで、任意に指定できるような手法をご存じないでしょうか? また、マクロでは無理なようでしたらVBAでしたら可能でしょうか? よろしくお願いします。

  • AccessVBAでのインポート

    AccessVBAにてファイル名にシステム日付が入っている、または更新日付がシステム日付のテキストファイルを指定ディレクトリよりインポートするということはできるのでしょうか?よろしくお願いいたします。

  • IMPORT処理速度 

    EXPORTされたダンプファイルをそのままIMPORTすると 数時間もかかってしまいます。(ORACLE9i)(エラーは出ません) 原因はあるテーブルの件数がかなりの件数に達しているためのようなのですが、IMPORT処理を速くする方法というのは何かあるのでしょうか? もしくはIMPORTする際にデータの範囲指定のようなことはできるのでしょうか?

  • マクロによるインポート

    アクセス初心者です。仕事でデータベースを作っているのですが、簡単な物がようやく完成しそうなのですが・・・。だた1つ、マクロを使ったインポートが上手く作動しません。エクセルからアクセスのテーブルにインポートさせたいのですが、マクロでワークシート変換→エクセルからアクセスへの指示を入力し、パス自体も間違えてはいない様なのですが、インポート元のエクセルシートを開いた状態でしかテーブルが更新されません。閉じた状態でマクロを動かしても、エラーメッセージは出て来ないのですが、いざテーブルを開いてみても、インポートされていないのです。更新する前にデータが重ならない様に、テーブルを削除してから、新たにインポートさせる指示にはしてあります。エクセルを閉じた状態でインポートさせるにはどうしたら良いのでしょうか?分かりにい文章で申し訳ありません。どうかお願いします。

専門家に質問してみよう