- ベストアンサー
アクセスマクロで起こるCSVデータの取り込みエラー
- WINDOWS2000でACCESS 97を使用している場合、アクセスマクロでCSVデータを取り込む際に「品番インポートエラー」というエラーテーブルが作成され、A100がデータ型の変換エラーとして処理される問題が発生します。
- 解決策として、「品番」テーブルのデータ型をテキストに変更し、ファイル→外部データの取り込み→インポート→次のテーブルに保存する「品番」で正しくデータを取り込むことができます。
- しかし、マクロでテキスト変換を行う場合には、「区切り記号付インポート」の設定で「テーブル名」「ファイル名」「フィールド名の設定」を指定する必要があります。この設定が正しく行われていない場合、データ型の変換エラーが発生します。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
>DoCmd.TransferText acImportDelim, "", "TEMP", "D:\TEMP.CSV", True, "" インポート定義を作成して DoCmd.TransferText acImportDelim, "インポート定義名", "TEMP","D:\TEMP.CSV", True ではどうでしょうか。 >A100を「データ型の変換エラー」と見なしています 数値文字混在のデータで型変換エラーが出でしまうのは最初のデータが数値の場合それ以降を数値として扱ってインポートしようとして文字があるとエラーになるような事例があったと思ったのですが前の事なので定かではありません。
その他の回答 (2)
- dee_honda
- ベストアンサー率53% (26/49)
インポート定義を作成して保存し、 マクロでインポートする際に、 その定義を指定します。 http://www.f3.dion.ne.jp/~element/msaccess/AcTipsGnrlHowToAttachExternalText.html の 「インポート/エクスポート定義の作成方法」 などを参考にしてみてください。
補足
ありがとうございました。 参考ページを教えていただきましたが、スキル不足で理解できません(泣) VBA は、EXCEL 上ではそこそここなせますが、ACCESS はまだこれからの課題なんです。 とりあえず、マクロをモジュール化してみました。 (便宜上テーブル名をTEMP 、取り込みCSVもTEMP.CSV としています。) DoCmd.TransferText acImportDelim, "", "TEMP", "D:\TEMP.CSV", True, "" 何が悪いのか、ご教授いただけるとありがたいです。。
データ型が数値になっているからだと思います。 インポートする際に、フィールドのオプションを指定する際に該当列をテキスト型としてください。
補足
回答ありがとうございました。 いやー。。。 > ACCESS 側に「品番」テーブルを作り、データ型をテキストにします。 受け入れテーブルは、テーブルデザインのデータ型を「テキスト型」にしてあります。 私の解釈、間違っています…?
お礼
もう一度、#2 さんが教えてくださった「外部テキストファイルとの接続方法」で、インポート定義名が空欄の場合に起こるエラーについて読みましたが、やっぱり定義名を設定するまでには至りませんでした(スキル不足) が、 > 最初のデータが数値の場合それ以降を数値として扱って もしかしたら2000以降のバージョンでは改善されているのかもしれませんが、どうもコレが犯人くさいです。 VBE で取り込み前に元CSV データを降順でソートし、ローマ字で始まる品番を上に持ってきてから取り込むと、エラーが起きないことがわかりました。 根本的な解決にはなってないですが(^^;)、助かりました。 ありがとうございました。