電子書籍の厳選無料作品が豊富!

ACCESS VBA でのCSV取込エラー

ACCESSにてフォルダ内にあるCSVファイルをすべてインポートしようとしています。
インポート定義を作成して、下記のコードを書いてみましたが、
データはすべてインポートされるのですが、
カンマが無視され、フィールドとフィールドの中間で途切れてデータが格納されてしまいます。
またフィールド4は日付形式なのですがこれがインポートエラーになります。

フィールド1 フィールド2 フィールド3 フィールド4
aaa aa,bbb bbb,ccc  エラー

2日間ほどネットサーフィンをして調べたのですが、
回避方法が見つからなかったので、お知恵を拝借できますでしょうか?

よろしくお願いいたします。

Private Sub cmd06_Click()

Dim MyFile As String
Dim MyName As String
Dim strFolderName As String

DoCmd.SetWarnings False
DoCmd.OpenQuery "Q09_全CSVデータ削除"
DoCmd.SetWarnings True

strFolderName = GetFolderName() 'フォルダ選択ダイアログを表示

If Len(strFolderName) > 0 Then '選択結果を評価

MyFile = strFolderName & "\*.csv" '【拡張子csvのファイルのみ取得】
MyName = Dir(MyFile, vbNormal)

Do While MyName <> ""
If MyName <> "." And MyName <> ".." Then
If GetAttr(strFolderName & "\" & MyName) <> vbDirectory Then

DoCmd.TransferText acImportFixed, "インポート定義", "T03_全CSVデータ", strFolderName & "\" & MyName, False, "" '【取得したファイルをインポート】

End If
End If
MyName = Dir

Loop

Else
MsgBox "フォルダは選択されませんでした"
End If

MsgBox "データのインポートが終了しました"

End Sub

A 回答 (2件)

> DoCmd.TransferText acImportFixed, "インポート定義", "T03_全CSVデータ", strFolderName & "\" & MyName, False, "" '【取得したファイルをインポート】



CSVファイルなら、acImportFixed ではなく、
acImportDelim でしょうね。

場合によっては インポート定義も見直したほうが良いかもしれません。
    • good
    • 0
この回答へのお礼

ありがとうございました!
acImportDelim
にしたところ、両方のトラブルが解決いたしました。

お礼日時:2010/06/29 15:12

途中でエラーがおきたとすると考える問題は少なくとも2つ。


エラーになるレコードの扱い
残っているインポートしてないファイルの扱い

エラーになるのは期待した形でないので今のインポートの仕掛けはたぶん使えない。別の方法にします。TRANSFARTEXTを使用せずにインポート、を探す。。

エラーが起きたかわかれば次のファイルへ処理進めたら残りはなんとかなります。


ファイルは特定できているし
後は
OPEN
DOWHILE
LINE INPUT
PRINT
LOOP
CLOSE
等使います。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!