access vbaでcsvを既存のテーブルにインポートしたいのですが、
インポート処理を実行した際に既存のテーブルと同じテーブル名のテーブルが作成されてしまいます。
しかも、既存のテーブルはすべてデータ型をテキスト型にしているのですが、
新しく作られたテーブルはデータ型が勝手に指定され、一部項目でインポートエラーが発生します
(おそらくcsvをインポートして新規のテーブルを作成するときと同じ動作をしています)
また、外部データタブから行うインポート操作では既存のテーブルを指定してうまくいきます。
何が原因か教えていただけますでしょうか?
以下ソースコードです
Sub csvデータ取込(filePath As String, fileName As String)
'インポート処理
DoCmd.TransferText acImportDelim, , "テーブル名", filePath & fileName, True
End Sub
> インポート処理を実行した際に既存のテーブルと同じテーブル名のテーブルが作成されてしまいます。
同じ名前のテーブルが複数存在している状態になるということですか。
ちょっと考えられない状況ですね。
本当に同じかどうかもういちど確認してください。
もし、間違いなく同じ名前なら、データベースファイルが破損していると思われますので、
下記の操作を試してみてください。
最適化/修復を実行する。
それでだめなら、
新規データベースファイルを作成して、旧ファイルからすべてのオブジェクトをインポートする。
最適化や新規データベースファイルを試しましたが、結果は同じでした。
ただ、テーブル名を"a"という一文字に変更したところ、同じテーブル名が作成されることはなくなりました。やはり日本語を使用しているのが良くなかったのでしょうか?
また、テーブルの名称を変えてもデータ型のインポートエラーは解決しませんでした。
すべてテキスト型にしているのに入らない文字とかあるのでしょうか?
インポートエラーになっている項目には"*"が格納されています。
エラー内容も「データ型の変換エラー」です。
事前にテーブルを用意しておいて、すべてのフィールドをテキスト型にしておいて、そのテーブルにインポートしてもエラーになりますか。
エラーになるCSVデータ例、テーブル名など、再現性のある情報を提供できますか。
>事前にテーブルを用意しておいて、すべてのフィールドをテキスト型にしておいて、
>そのテーブルにインポートしてもエラーになりますか。
エラーとなります。
テーブル名:a
フィールド数:16(すべてテキスト型)
csvファイルもフィールド数、フィールド名は一致しており中の2項目に"****"が入っている
フォームに適当なボタンを設置し、上記のソースを使用しています。
以下で実行してみて下さい。
CurrentDb.Execute "INSERT INTO " & "テーブル名" & " SELECT * FROM [Text;DATABASE=" & filePath & ";HDR=YES;].[" & fileName & "]"
だめですね…インポートエラーにはなりませんが”****"はうまく格納されないです
https://teratail.com/help/question-tips#questionTips11
https://teratail.com/help/question-tips#questionTips2
https://teratail.com/help/question-tips#questionTips34
https://teratail.com/help/question-tips#questionTips36
https://teratail.com/help/question-tips
は読みましたか?
読んだ結果を本文に反映ください。解決のヒントを探れるかもしれません。
> ”****"はうまく格納されないです
とはどのような事ですか?抽象的ではなく具体的に報告されて下さい。
> インポートエラーになっている項目には"*"が格納されています。
> 中の2項目に"****"が入っている
「値に "*" という文字が含まれている列が CSV ファイル上に 2 つある」という意味でおっしゃっているのだとして、その値が格納されているのは元の CSV ファイルの何行目においてなのでしょうか。

回答1件
あなたの回答
tips
プレビュー