2022年5月
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31        
無料ブログはココログ

« スクリプトでcsvファイルを整形する。 | トップページ | スクリプトでcsvファイルを整形する。(その3) »

2010年12月10日 (金)

スクリプトで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にヘッダを自動生成するには、コメントアウトを外す。

« スクリプトでcsvファイルを整形する。 | トップページ | スクリプトでcsvファイルを整形する。(その3) »