スクリプトでcsvファイルを整形する。(その2)
すべての値を、空の値も、""で囲んで、標準出力に出します。
× aaa,b b,,"ddd","e e"
○ "aaa","b b","","ddd","e e"
cscript csvfix.vbs 入力ファイル
Option Explicit
Const adOpenStatic = 3
Const adLockOptimistic = 3
Const adCmdText = &H0001
Dim fso
Dim Path
Set fso=CreateObject("Scripting.FileSystemObject")
For Each Path In WScript.Arguments
Call CSV(fso.GetAbsolutePathName(Path))
Next
Sub CSV(Path)
Dim CN
Dim RS
Dim Items
Dim k
Dim Value
Set CN = createobject("ADODB.Connection")
Set RS = createobject("ADODB.Recordset")
CN.open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source= " & fso.GetParentFolderName(Path) & "\;Extended Properties=""text;HDR=NO;FMT=Delimited"""
RS.open "SELECT * FROM " & fso.GetFileName(Path) ,CN, adOpenStatic, adLockOptimistic, adCmdText
ReDim Items(RS.Fields.Count-1)
'For k=0 To RS.Fields.Count-1
' Items(k)=Chr(34) & RS.Fields.Item(k).Name & Chr(34)
'Next
'WScript.Echo Join(Items,",")
Do While Not RS.EOF
For k=0 To RS.Fields.Count-1
Value=RS.Fields.Item(k).Value
If IsNull(Value) Then Value=Empty
Items(k)=Chr(34) & Value & Chr(34)
Next
WScript.Echo Join(Items,",")
RS.MoveNext
Loop
RS.Close
CN.Close
End Sub
ヘッダのないCSVにヘッダを自動生成するには、コメントアウトを外す。