VBSでCSVのキー項目の取得
VBSでCSVファイル(UnicodeBE BOMなし)内のデータを
キー項目(コード)ごとに分け、
それぞれ別のCSVファイルに出力しようとしています。
(ファイル名にコードを付与することで別々にします。)
しかし、キー項目の取得に失敗しているようで
分岐処理が正しく行われていません。
CSVファイル(test_in.csv)は以下のような形式です。
(実際のファイルに項目行はありません)
連番,コード,フラグ,日付
1,0001,A,20091001
2,0002,A,20091001
3,0002,U,20091002
4,0001,D,20091003
以前、こちらで質問し、ご回答頂いた内容を基に
処理を実装しました。
Option Explicit
Dim iSt
Dim tPath
Dim oFso
Dim stdOut
Dim aLine
Dim field
Dim wk
Set iSt = WScript.CreateObject("ADODB.Stream")
iSt.Open
iSt.Type = 2 'バイナリ
iSt.Charset = "UTF-16BE"
iSt.LoadFromFile("test_in.csv")
iSt.LineSeparator = -1 'CRLF
iSt.Position = 0
tPath = "E:\\test_out.csv"
Set oFso = CreateObject("Scripting.FileSystemObject")
Set stdOut = CreateTextFileBE(oFso,tPath)
Do While Not iSt.EOS
aLine = iSt.ReadText(-1)
field = split(aLine,",")
aLine = join(field,",")
if field(1) = "0002" then
WriteLine stdOut,aLine
end if
Loop
iSt.Close
oFso.Close
Set iSt = Nothing
Set oFso = Nothing
WScript.Quit
Function CreateTextFileBE(fso,Path)
fso.CreateTextFile(Path).Write Chr(&HFE) & Chr(&HFF)
Set CreateTextFileBE=fso.OpenTextFile(Path,8,,True)
End Function
Sub WriteLine(stdOut,Line)
stdOut.Write Line & vbCrLf
End Sub
0002のレコードが入ったCSVファイルを出力しようとしましたが、
レコードなしのCSVファイルが作成されてしまいます。
コードごとにファイルを分ける処理についてもよくわからず、
取りあえずコードを限定し1ファイルだけの出力にしています。
お礼
アドバイス、ありがとうございました。 私の単純なミスが原因でした。 Data.csv を作ったはずが、Data.csv.txtとなっていました。 拡張子を表示しない設定になっていたため、なかなか分かりませんでした。 大変お騒がせしました。