VBAでCSVファイルをインポートする方法について
VBAでCSVファイルをインポートする方法について
OS:ウィンドウズXP
Access Version:2000
AccessVBAでcsvファイルをインポートするマクロを作っています。
現在、インポート定義を利用して、データ型を指定したインポートができているのですが、1点だけ問題があり、質問します。
インポートするcsvファイルのA列にIDが入力されています。
そのA列の末尾に、ID(数値型)ではない「<b>32</b><br />」という値が入っています。
Accessのテーブルでは、このIDのフィールドは数値型で管理している為、この1レコードだけ
エラーとなり、エラーテーブルが作られ、また、インポート先のテーブルには空のレコードができてしまいます。
この末尾の行については、IDではない「<b>32</b><br />」以外は何もデータが入っていない為、
インポートする必要がありません。
もし可能であれば、csvファイルのA列(Accessテーブルでは数値型のIDというフィールド)が数値ではない場合、
その行のインポートをスキップするような処理がVBAで作成できるとよいのですが、可能でしたら教えてもらえないでしょうか。
※以下はVBAを作成する為に仮に用意し、読込を行っているcsvファイルと、VBAソースになります。
○csvファイル名:インポート用csvファイル.csv
内容:
ID,テキスト1,テキスト2,テキスト3,テキスト4,メモ1,メモ2,
1,a,A,z,Z,あ,ん,
2,b,B,y,Y,い,を,
3,c,C,x,X,う,わ,
4,d,D,w,W,え,ろ,
5,e,E,v,V,お,れ,
6,f,F,u,U,か,る,
7,g,G,t,T,き,り,
8,h,H,s,S,く,ら,
9,i,I,r,R,け,よ,
10,j,J,q,Q,こ,ゆ,
<b>32</b><br />,,,,,,
○VBAソース
Dim FN As String
Dim Res As Integer
WizHook.Key = 51488399
Res = WizHook.GetFileName(0, "", "", "", FN, "", _
"csvファイル(*.csv)|*.csv", 0, 0, 4, True)
WizHook.Key = 0
If Res = 0 Then
DoCmd.TransferText , "csvインポート定義", "インポートテーブル", FN
MsgBox "csvファイルをインポートしました", vbOKOnly
End If
お礼
ありがとうございます. 以下のようにすればできました sqlldr sato/secret control=x.ctl x.ctl: LOAD DATA INFILE 'x.csv' APPEND INTO TABLE x_table FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' TRAILING NULLCOLS ( i,s ) x.csv: 1,"it is iti." 2,"it is ni." 3,"it is san."