• ベストアンサー

VBAでCSVファイルのインポートについて

ACCESS2003でCSVファイルのインポートを行うVBAをご教授下さい。 ただし、CSVファイルは各項目がダブルコーテーションではさまれており、カンマはありません。 1行目にヘッダーがあります。 DoCmd.TransferText acImportDelim, , FileName, ImportPath, True ↑ これだと、うまくインポートされませんでした。 大変困っております。 どうぞよろしくお願い致します。

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

  • ベストアンサー
  • kmetu
  • ベストアンサー率41% (562/1346)
回答No.4

エクセルでファイルを開くを利用して開くとテキストファイルウィザードが実行されると思います。そのときに「カンマやタブなどの区切り文字によってフィールドごとに区切られたデータ」を選択し次に進みます。 次に区切り文字の選択ができますので、スペースにチェックし、その他にダブルクォーテーションを指定しチェック、文字列の引用符をなしにするとデータのみが取り出せますので、それでcsvとかエクセルファイルとして保存してアクセスでインポートしてください。

espmn
質問者

補足

kmetuさん 返信が遅くなり大変申し訳ございません。 ご回答ありがとうございます。 ご教授頂きました方法で、うまく項目毎に区切られインポートすることが出来ました! 本当にありがとうございました。

その他の回答 (4)

  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.5

#4さんの回答への反応が無いのが不思議ですが・・。 その謎のファイルをメモ帳で開き Ctrl + A で全選択 Ctrl + C でコピー 新規Excelファイルを開き 適当な(何処でも可)ところで Ctrl + V で貼り付け で項目ごとに分割された状態になるのなら カンマ区切りではなく、Tab区切りのデータです。(多分) Access2003なら、メニューの ファイル → 外部データの取り込み → インポート からウィザードに従って進んで行ってみてください。 私の憶測が合っていなかったら読み捨ててください。 (結果だけは伝えて欲しいです) 今回限りの処理なら上記ウィザードで進めてゆけば良いでしょうし 頻繁にあるのなら インポートファイル名は常に同じ? インポートファイルのフォーマットは常に同じ? インポート先のテーブル名は常に同じ? その場合上書き?追加? ・・・ などがわかればVBAで処理できるかも?です。

espmn
質問者

補足

nicotinismさん 回答が遅くなり、大変申し訳ございませんでした。 ご回答して頂き、ありがとうございます。 Ctrl + A で全選択後Ctrl + C でコピー 新規Excelファイルを開き、適当な(何処でも可)ところでCtrl + V で貼り付け でやってみましたが、項目毎に区切られずデータ自体何も変わりませんでした。 本当にやっかいなファイルです。

  • x-1919
  • ベストアンサー率52% (91/173)
回答No.3

そういう変態チックなテキストファイルはどこから出てきたものなんでしょうか・・・ CSV 形式に直してからインポートするほうがよいかと思います。 質問者の言うとおり、各項目がダブルクォーテーションで囲まれていて、区切り文字が全くないのであれば、 "○○○""○○○""○○○""○○○""○○○""○○○" となっているのでしょうから、「""」 を 「","」 に置換してみてはどうでしょうか。 置換機能はメモ帳にもあります。

espmn
質問者

補足

ご回答ありがとうございます。 Excelでは、どういう理由なのか全ての「""」に対して「,」へ置換をすることが出来ませんでした。 Excelでそのファイルを開きますと、 "○○○""○○○""○○○""○○○""○○○""○○○" という形で表示されますが、これをテキストで開きますと、 "○○○"  "○○○" "○○○""○○○"    "○○○" "○○○" というようにダブルコーテーションの間に不規則にスペースが入っております。 これが原因で置換が出来なかったのかもしれません…。 他に何か良い方法がございましたら、ご教授頂けますと大変助かります。 よろしくお願い致します。

回答No.2

カンマが入っていないファイルをCSV(Comma-Separated Values)とは呼ばない。 根本的に考え直しが必要です。 なお、「うまくいきません」は情報量0であることを認識してください。 最低でも「どうなるつもりだったか」「どうなったか」の2点は無いと、回答者は何から何まで推測してあげないといけなくなり、的外れな結果になる危険性が大きくなります。

espmn
質問者

補足

ご回答ありがとうございます。 ご指摘の通り、カンマがないファイルはCSVファイルではないですね。 もっと現状を詳しく記載すべきでした。 大変失礼致しました。 【実現させたいこと】 ダブルコーテーションで囲まれたデータが、Accessのテーブルの一つのセル(と呼ぶのでしょうか)へ格納させたいです。 但し、ダブルコーテーションは削除したいです。 【実行結果】 DoCmd.TransferText acImportDelim, , FileName, ImportPath, True を実行した結果、100項目ある中1項目しか正常にインポートされませんでした。 「インポートエラー」テーブルが作成され、「エラー」項目に「解析不能なレコード」と書かれております。 実現方法をご教授頂けると大変助かります。 よろしくお願い致します。

回答No.1

馬鹿でも最初に カンマを入れてからインポート をする事を思いつくと思うのだが・・・

関連するQ&A