アクセスマクロで起こるCSVデータの取り込みエラー

このQ&Aのポイント
  • WINDOWS2000でACCESS 97を使用している場合、アクセスマクロでCSVデータを取り込む際に「品番インポートエラー」というエラーテーブルが作成され、A100がデータ型の変換エラーとして処理される問題が発生します。
  • 解決策として、「品番」テーブルのデータ型をテキストに変更し、ファイル→外部データの取り込み→インポート→次のテーブルに保存する「品番」で正しくデータを取り込むことができます。
  • しかし、マクロでテキスト変換を行う場合には、「区切り記号付インポート」の設定で「テーブル名」「ファイル名」「フィールド名の設定」を指定する必要があります。この設定が正しく行われていない場合、データ型の変換エラーが発生します。
回答を見る
  • ベストアンサー

アクセスマクロで、csv データを取り込むときに起こるエラー

こんにちは、いつも質問ばかりですみません。 WINDOWS2000 で ACCESS 97 ユーザーです。 品番.CSVがあるとします(数千行) 品番は、 100 A100 のように、数字のみやローマ字が入り混じっています。 ACCESS 側に「品番」テーブルを作り、データ型をテキストにします。その上で  ファイル  -外部データの取り込み  -インポート  -次のテーブルに保存する「品番」 でテーブルを指定すると、きちんと入ります。 が、マクロで  テキスト変換  -区切り記号付インポート  -テーブル名「品番」  -ファイル名「品番.CSV」  -フィールド名の設定「はい」 で実行すると、 「品番インポートエラー」テーブルが別に作成され、 A100 を「データ型の変換エラー」と見なしています。 …どうしてでしょう。

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

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

>DoCmd.TransferText acImportDelim, "", "TEMP", "D:\TEMP.CSV", True, "" インポート定義を作成して DoCmd.TransferText acImportDelim, "インポート定義名", "TEMP","D:\TEMP.CSV", True ではどうでしょうか。 >A100を「データ型の変換エラー」と見なしています 数値文字混在のデータで型変換エラーが出でしまうのは最初のデータが数値の場合それ以降を数値として扱ってインポートしようとして文字があるとエラーになるような事例があったと思ったのですが前の事なので定かではありません。

megumaru
質問者

お礼

もう一度、#2 さんが教えてくださった「外部テキストファイルとの接続方法」で、インポート定義名が空欄の場合に起こるエラーについて読みましたが、やっぱり定義名を設定するまでには至りませんでした(スキル不足) が、 > 最初のデータが数値の場合それ以降を数値として扱って もしかしたら2000以降のバージョンでは改善されているのかもしれませんが、どうもコレが犯人くさいです。 VBE で取り込み前に元CSV データを降順でソートし、ローマ字で始まる品番を上に持ってきてから取り込むと、エラーが起きないことがわかりました。 根本的な解決にはなってないですが(^^;)、助かりました。 ありがとうございました。

その他の回答 (2)

  • dee_honda
  • ベストアンサー率53% (26/49)
回答No.2

インポート定義を作成して保存し、 マクロでインポートする際に、 その定義を指定します。 http://www.f3.dion.ne.jp/~element/msaccess/AcTipsGnrlHowToAttachExternalText.html の 「インポート/エクスポート定義の作成方法」 などを参考にしてみてください。

megumaru
質問者

補足

ありがとうございました。 参考ページを教えていただきましたが、スキル不足で理解できません(泣) VBA は、EXCEL 上ではそこそここなせますが、ACCESS はまだこれからの課題なんです。 とりあえず、マクロをモジュール化してみました。 (便宜上テーブル名をTEMP 、取り込みCSVもTEMP.CSV としています。) DoCmd.TransferText acImportDelim, "", "TEMP", "D:\TEMP.CSV", True, "" 何が悪いのか、ご教授いただけるとありがたいです。。

noname#60992
noname#60992
回答No.1

データ型が数値になっているからだと思います。 インポートする際に、フィールドのオプションを指定する際に該当列をテキスト型としてください。

megumaru
質問者

補足

回答ありがとうございました。 いやー。。。 > ACCESS 側に「品番」テーブルを作り、データ型をテキストにします。 受け入れテーブルは、テーブルデザインのデータ型を「テキスト型」にしてあります。 私の解釈、間違っています…?

関連するQ&A

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

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

  • csvファイルをAccessに取り込むとデータ数が増える

    項目をカンマで区切っただけの単純なcsvファイルをAccessでインポートしてテーブルを作成したら、データ数が増えてしまいました。 (csvファイルをテキストで開いたときの行数と、Accessの行数が異なる) 5000件ぐらいなら、csvもAccessもデータ数は同じなのですが、データ数が大きくなると、csvとAccessのテーブルで6万件とかの差分が出てしまいます。 csvファイルとAccessで、データ数を同じにするにはどうしたら良いでしょうか。 参考になるURLでも良いので、教えて頂ければと思います。 よろしくお願いします!

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

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

  • Access2000のCSVファイルのインポートについて

    Access2000でCSVファイルをインポートしようと思っています。 インポート方法は、VBAで 「DoCmd.TransferText acImportDelim, , "テーブル名", "ファイル名"」を使用しています。 この時に、CSVファイルが次のようなデータです。 F1,F2,F3 0010,0200,0001A12 0011,0201,0021B12 (実際は、1000件近いデータです) これをインポートすると、 F1,F2,F3 10,200,1A12 11,201,21B12 となってしまいます。 頭の「0」を省きたくないのです。 文字列として取り込めないでしょうか? CSVのデータに""を自動でつける方法はないでしょうか? Accessの外部データの取り込みを使うと、文字列として指定できるのですが、VBAを使いワンクリックでデータを取り込もうとしています。 よろしくお願いします。

  • ACCESSのテーブルをCSVにして

    お願いします。 ACCESSのテーブルをCSVにして指定のホルダーに入れたいのです。 テーブル T_在庫表  項目は 「品番」 「在庫数」 エクスポート先 c\在庫\在庫表.txt マクロで テキスト変換   区切り記号付きインポート 在庫 c\在庫\在庫表.txt と入れましたがうまくできません。 ほかにいい方法はありませんか?

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

    Accessでcsvファイルをインポートさせようとしています。しかし、「F1フィールドがありません」のようなエラー表示が出て、できません。私の予想では、テーブルの型とcsvファイルの型が違うのではないかと思っています。テーブルには、数値型、テキスト型、日付/データ型があります。 保存したcsvファイルをExcelで開くと日付がApr-01や、2001/06/26となったりしていました。どこかで型変換のようなことをするのでしょうか?csvのことはよく分かりません。どうか、よろしくお願いします。

  • AccessでCSVの読み込み履歴を残したいです

    Excel・Accessで時々CSVやタブ区切りファイルからデータを取り込んでいます。 ExcelではCSVファイルを取り込むとメニューの[ファイル(F)]のオープン履歴に残りますが、AccessでCSVファイルを読み込んだ履歴を残せるような設定等はありませんでしょうか? いつもAccessでは[ファイル(F)]-[外部データの取り込み(G)]-[インポート(I)...]からCSVファイルのデータを読み込んでいます。 使えるOfficeのバージョンは 97~2003 のいずれかです。 ※機能を見つけられないだけなのか、それとも実際に機能がないのかもよくわかっていませんので、無理なら無理と教えてもらえると助かります。

  • AccessからExcelファイルのデータ取得

    Access2000かExcelファイルのデータを取得したいのですが、 Excelファイルを一度 CSVファイルに変換し、その後Accessのテーブルへデータ取り込み といった手順をとりたいのです。 この方法って、どうコーディングすればいいのですか? (Accessのインポート処理は使用しない方法です)

  • ACCESSで、テキストファイルをインポートしたい

    宜しくお願い致します。 ACCESSで、テキストファイルをインポートしてテーブルを作成したいのですが、ファイル→インポートを選択して、ウィザードを開く方法は分かるのですが、マクロを作成してインポートは出来ないでしょうか? excel、CSVファイルでしたら、「ワークシート変換」、「テキスト変換」のマクロでインポートしたりエクスポートしたり出来ると思うのですが・・・、 (1)テキストファイルをインポートしたり、エクスポートしたりする場合、どのようなマクロがあるのでしょうか。 (ためしに、「出力」マクロで、あるテーブルをCSVファイルにエクスポートしてみたのですが、カンマ区切りにできず、excelのような枠付きのテキストファイルになってしまいました。) (2)容量が大きいデータの場合は、テキストファイルでエクスポートしたほうが良い・・・という認識に間違いはありませんでしょうか。 質問が一つ増えてしまいましたが、宜しくお願い致します。

  • 【ACCESS2002】csv形式データのインポートエラー

    ACCESS2002を使用しています。 csv形式のデータをインポートしようとしますと、「オブジェクト'(ファイル名)'が見つかりませんでした。オブジェクトが存在していること、名前やパス名が正しいことを確認してください。」というエラーメッセージが表示されます。 ファイルが破損しているのでしょうか? よろしくお願いします。

専門家に質問してみよう