アクセステーブルインポートの自動化方法について

このQ&Aのポイント
  • アクセスを理解していない方向けに、テキストファイルからのテーブルインポートを自動化する方法を教えてください
  • テキストファイルを特定フォルダ内で選択し、マクロを使用してテーブルインポートする方法について教えてください
  • テキストファイル内の50個のフィールドまでをインポートし、テーブルも追加・新規作成する方法について教えてください
回答を見る
  • ベストアンサー

アクセス テーブルインポート 自動化

アクセスをよくわかってなく、幼稚な問ですが、教えてください。 複数のテキストファイルから一つをファイル名で選択して、テーブルイン ポートします。 マクロで自動化させたいのですが、どのようにすれば良いでしょうか? ・テキストファイルは、DBと同一フォルダ内の特定フォルダ内に、日次  で追加新規作成され、ファイル名は西暦8桁と末尾にアルファベット一  文字 ・スペース区切りで値はすべて文字列 ・可能ならば、毎回、フィールド数100の内、前半50のみをインポートしたい ・テーブルもインポートの都度、追加新規作成 また、上記のテーブルからクエリで特定のフィールドを抽出するのですが、 対象となるテーブルを名称で選択して行う場合、一般的にはどのようにす るのでしょうか? お手数ですがよろしくお願いします。

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

  • ベストアンサー
  • Gin_F
  • ベストアンサー率63% (286/453)
回答No.1

> ・テキストファイルは、DBと同一フォルダ内の特定フォルダ内に、日次 >  で追加新規作成され、ファイル名は西暦8桁と末尾にアルファベット一 >  文字 > ・スペース区切りで値はすべて文字列 > ・可能ならば、毎回、フィールド数100の内、前半50のみをインポートしたい > ・テーブルもインポートの都度、追加新規作成 > また、上記のテーブルからクエリで特定のフィールドを抽出するのですが、 > 対象となるテーブルを名称で選択して行う場合、一般的にはどのようにす > るのでしょうか? 実際にはどのように使っているのでしょうか? 毎回、新規でテーブルを追加するのであれば、クエリも毎回変更する 必要が出てきます。 そこも自動化するのなら、VBAが必須になりますね。 #インポートするファイル名を選択したいのならば、その時点でVBAが  必要にはなりますけど ^^; このデータを使って、様々な作業をするのならインポートが必要でしょうけど、 クエリでデータを抽出して、レポートを作るぐらいであれば、リンクテーブルを 使うとか、テキストファイルそのものを、クエリのソースとするとかでも いいような気がします。 それについては、 外部テキストファイルとの接続方法 http://www.f3.dion.ne.jp/~element/msaccess/AcTipsGnrlHowToAttachExternalText.html こちらが参考になると思います。

nonboo
質問者

お礼

さっそくのご回答ありがとうございます。そのとおりなのです。 他作業の都合により、毎回新規でテーブルを追加しなければなりません。毎回インポートするファイル名も違います。 VBAが必須であろうとは思いますが、エクセルで少々の経験があるのみでほとんどわかっていません。 ファイル名とテーブル名は同一なので、フォームを使って入力した値が変数となるようなイメージを持つのですが、実際、 クエリやマクロとの関係について、見当がつきません。 お手数ですが、そのあたりを教えていただければ幸いです。

その他の回答 (1)

  • Gin_F
  • ベストアンサー率63% (286/453)
回答No.2

> 毎回インポートするファイル名も違います。 > ファイル名とテーブル名は同一なので、 うん? ファイル名も、テーブル名も変わるんですよね? > フォームを使って入力した値が変数となるようなイメージを持つのですが、実際、 > クエリやマクロとの関係について、見当がつきません。 フォームで、ファイル名・テーブル名を指定するのであれば、マクロでも 可能かもしれません。 マクロの、テキスト変換アクションで、ファイル名・テーブル名の各引数に =Forms!フォーム名!テキストボックス名 のように指定してみてください。 (マクロは普段使わないので、違っているかも ^^;) > VBAが必須であろうとは思いますが、エクセルで少々の経験があるのみで > ほとんどわかっていません。 変数の使用や、エラー対策などを考えると、少しずつVBAに慣れていったほうが いいと思います。 のちのちの運用面なんかを考えても、マクロよりはVBAの方がコードの検索が 使えるのでやりやすいですし。 ちなみに、VBAだと TransferText メソッドになります。 一度、ヘルプで構文等を確認してみてください。

nonboo
質問者

お礼

ありがとうございます。挑戦してみます。 >> ファイル名とテーブル名は同一 20060701.txt -(インポート)→ 20060701 20060705.txt -(インポート)→ 20060705 のようになるので、同日の作業としては、テーブルインポートとクエリの 実行に、フォーム入力から得られた値を両方に使えるのかという短絡な発 想です。説明下手ですいません。

関連するQ&A

  • Access Excelのインポートについて

    お世話になります。 Access2010 Excelインポート時の仕様についてご教示下さい。 フォーム上に「インポート」ボタンを設置し、ボタンを押すと ファイル選択ダイアログが表示され、そこで選択されたファイルを インポートしています。 DoCmd.TransferSpreadsheet acImport, 10, "temp", strFile, True ※strFileはダイアログにて選択されたファイルのパス インポートする前に事前にテーブルを作成しておき、そこに Excelのデータがインポートされます。 事前に作成しておくテーブル(temp)のデータ型は以下の通りです。 ID オートナンバー 契約開始日 日付/時刻型 契約終了日 日付/時刻型 案件名   テキスト型 価格    テキスト型 ※Excelの「価格」は通貨型となっておりますが、いくつかのセルに  文字列が入力されている為、テキスト型としてます。 <質問> インポートすると、「価格」フィールドにてデータ型の変換エラーが 発生します。エラーテーブルを確認したところ、Excelの「価格」に 文字列が入っている行でした。 予めテキスト型を用意しておいても、文字列の行はエラーとなって しまいます。なお、価格(数値)が入力されているものは、文字列として インポートされています(左詰めになっている)。  100000  50000  10000  80000   ・  50000  空白  ← 本来は文字列が入力されている。 予めテキスト型を用意しておいたとしても、インポート時の仕様?で 先頭から数行が数値なら数値フィールドと認識されてしまって、 文字列が削れ落ちてしまうのかなと。 ちなみに、インポートするExcelの先頭行の価格を「'100000」にして インポートしたところ、ちゃんとインポートはできましたが、 2行目以降は¥マークも含めた文字列でインポートされてしまいました。  100000  ¥50000  ¥10000  ¥80000   ・  ¥50000  文字列 どうにか対処する方法はございますでしょうか。 以上、宜しくお願い致します。

  • Accessのインポートについて

    マイクロソフトアクセス2010でテーブルを作り、そこにCSVファイルを読みこませたいです。 テーブルのフィールドはテキスト型です。 例えば、Table_TESTというテーブルにF1というテキスト型のフィールドを設けます。 Access標準のTEXTインポート機能を使い、インポートを行おうとします。 CSVファイルのデータは、「12345678912345678ABCD」といったように数値とアルファベットです。 なぜか、このようなデータをインポートする時にデータ変換エラーと表示されて、正しくインポートできません。 これは、なぜこのような現象が起こるのでしょうか?

  • access2010でメモ型がインポートできない

    以前のACCESS2000では出来ていたのですが、ACCESS2010(windows7)にバージョンアップしたところ、csvファイルのインポートで、メモ型のデータが255文字までしかインポートできなくなりました。 調べてみたところ、そのフィールドを、クエリなどで使用しているとキャスト(型変換)されるのでメモ型ではなくなり255文字の制限がかかる、との記述がありましたが、新しいテーブルを作成してインポートしてもできませんでしたので、別の原因かと思われます。 また、ACCESS2000のデータを、ACCESS2010の[ファイル]-[保存して発行]・・・・も行い、拡張子を.accdbにしてみましたが、やはり255文字を超えるインポートができませんでした。 インポート時の[設定]のところのフィールドの情報で、メモ型にしてあるフィールド名が表示されていないのが気になりますが。 文字列の引用符は ” にしています。 ACCESSはデータの25行目までを読み込んでデータ型を自動選択している、という記述もあり、1行目のデータに256以上の文字を入れてインポートもして見ましたが255文字で切られてしまいます。 よろしくお願いいたします。

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

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

  • Access(アクセス)でのインポートについて

    テーブルのインポートでエクセルファイルをインポートしたいのですが「ワークシートインポートウィザード」の画面でテーブルを指定して保存すると 「Microsoft Access」の画面で「すべてのデータをテーブルに追加できませんでした。 キー違反のため、0件のレコードのデータが失われ、0件のレコードが削除されました。」と出てきて、保存できません。 もとのテーブルのデータ型を使ってインポートするにはどうしたらいいのでしょうか。よろしくお願いします。 インポートする元のデータ(エクセル)とインポート先(アクセス)の関係は次の通りです。 エクセルファイル    アクセスのテーブル (セルの書式設定)   データ型、フィールドサイズ --------------------------------------------- 数値          数値型、長整数型 文字列         テキスト型、16 インポートする前に元のエクセルデータをアクセスのデータ型に合わせただけではダメなのでしょうか

  • Accessの自動インポート方法を教えてください。

    今回、ある特定フォルダの中にあるdbfファイルを自動インポートしたいと思っております。 その際には、すでにインポートしたdbfファイルはインポートしないか、テーブルを一度全て削除してからインポートを始めるかのどちらかの方法になると思います。インポート方法はTransferTableで実行できるのは知っています。 dbfファイル名を取得する方法と、テーブルの削除方法を御願いします。宜しく御願い致します。ちなみに、OS:windows2000、AccessVersion:access2000です。

  • 複数のCSVファイルのAccessテーブルへの連続インポートについて

    特定のフォルダにある形式は同じでファイル名の異なる複数のcsvファイルをAccessの特定のテーブルに自動で次々にインポートして1つのテーブルを作成したいのですが、今回の作業をするに当たりVBAに関するの本をはじめて読んだ程度の知識です。 本あるいはこの「教えて」を読んで、TransferTextを使い、Loop~Doでやればよいのかなと思うのですがうまくいきません。 すみませんが教えていただけたらうれしいです。Access2000を使っています。

  • Access2000 csvファイルのインポート

    Access2000のVBAを使用してcsvファイルを用意されたテーブルにインポートをしたいのですが、 やっかいな条件があります。 ある決められたフォルダに複数のファイルが存在している、そこから全てのCSVファイルを読み込み、3フィールド目(1行目はタイトル行)の値が「"3"」のものだけインポートする。 あるフィールドには、255文字以上のフィールド(改行文字あり)があります。このフィールドはインポートしてもしなくてもよい 今までは、インポート定義を設定してインポートしていたのですが、csvファイルを判別して、インポート前にフィールドの判別をする方法がわかりません。また、255文字以上の対応もうまくいきません。   

  • アクセスへの自動インポート

    エクセルデータをアクセスへインポートしているのですが ファイル数が多いため自動化を考えています。 ※決まったフォルダーへファイルを入れておいて メニューフォームから作業できるようにしたいと考えています ファイルはcsv形式です win98 アクセスは2000です 1.ファイルには全て見出しがついています。 (手動の場合は先頭行をフィールド名として使うにチェックを入れています) 2.ファイル名は常に同じ名前です 各ファイルを指定のテーブルにインポートしたいのですが どのようなマクロを組めばよろしいのでしょうか? (マクロを組まなければ出来ないですよね?) また、参考図書がありましたら出版社と本の名前を教えていただけると 助かります。 (本屋で立ち読みをしたのですが、見つけることが出来ませんでした。) お盆でお休みのところすみませんが、アクセス初心者のため、 ご教授願います。

  • ACCESS2000でExcelから特定フィールドをインポートしたい

    ACCESS2000でExcelから特定のフィールドをインポートしたいのですが、 うまくいきません。 Excelはフィールド数が254フィールドもあり、 テーブルにインポートしたいフィールド数は30フィールドです。 Excelでは特定フィールドをインポートすることができないようなので、 一時テーブルに全てのフィールドをインポート後 必要なフィールドだけ取り出そうとやってみたのですが、 以下のコードを実行すると、13のフィールドが「解析不能なフィールド」と インポートエラーが出てしまいます。 DoCmd.TransferSpreadsheet acImport, 8, "TEMPテーブル", "c:\data.xls" また、Excelファイルをcsv形式に変換して、インポート定義を作る方法も やってみたのですが、インポート定義作成時に 「フィールド'ID'はインポートまたはエクスポートしようとしている テーブルまたクエリに存在しません」 というエラーが出てしまいます。 どうしたらインポートできるでしょうか。よろしくお願いします。

専門家に質問してみよう