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ファイルだけの出力にしています。
No.2ベストアンサー
- 回答日時:
>Do While Not iSt.EOS
>aLine = iSt.ReadText(-1)
・・・
>Loop
何回ループしていますか?
ReadTextの引数を見ると、一遍に読み込んでいるようですが。
http://msdn.microsoft.com/ja-jp/library/cc389881 …
この回答への補足
ご回答ありがとうございます。
ご指摘のとおり、一度に全て読み込んでいました。
iSt.ReadText(-2)に修正し、一行ずつ読み込むようにしました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 複数のcsvファイルをExcelに一括変換したい 2 2023/03/03 12:44
- Excel(エクセル) エクセルのVBAについて とあるサイトのコードを参考に、CSVの文字化けを直すVBAを作成しているの 7 2022/11/04 14:15
- Excel(エクセル) VBA フォルダ見える化のコードについて 2 2023/06/19 15:04
- Visual Basic(VBA) vbaの構文の修正相談(xmlファイルを順に開いてコピペ作業) 1 2023/04/22 01:18
- Visual Basic(VBA) vbaのエラー対応(実行時エラー7:メモリが不足しています) 4 2023/04/24 00:20
- その他(プログラミング・Web制作) データ解析ソフトRでのファイル入力read.csvがエラーになります 7 2022/03/27 22:11
- その他(プログラミング・Web制作) Windowsのバッチファイルについてご教示ください 5 2023/07/25 20:23
- その他(プログラミング・Web制作) python 気象データの取得 2 2023/06/20 23:54
- Visual Basic(VBA) 複数csvを横に追加していくマクロについて 2 2023/04/25 09:19
- Visual Basic(VBA) エクセルVBAについて 8 2022/07/13 22:41
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
カンマ区切りのCSVファイルから...
-
複数のcsvファイルをExcelに一...
-
CSV形式での保存時に”文字列...
-
csvファイルでの日付設定「yyyy...
-
VBAでcsvファイルを読み込んで...
-
csvファイル 項目数取得
-
マクロから出力されるcsvのダブ...
-
複数のCSVファイルのAccessテー...
-
csvファイルを列数ごとに分割す...
-
エクセル形式のファイルの読み込み
-
ADODBでSQL実行前にレコードセ...
-
バッチでCSVを処理する時、空の...
-
csvファイルのデータの間引きを...
-
【C#】パス名で無効な文字
-
PHP.laravelについて
-
COBOLでCSVをインプットにして...
-
【ExcelVBA】UTF-8の文字コード...
-
CSVファイルの項目行を削除...
-
ファイル名ないにあるカンマを...
-
エクセルで運転時間を見たい
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
カンマ区切りのCSVファイルから...
-
CSV形式での保存時に”文字列...
-
複数のcsvファイルをExcelに一...
-
csvファイル 項目数取得
-
csvファイルでの日付設定「yyyy...
-
バッチでCSVを処理する時、空の...
-
マクロから出力されるcsvのダブ...
-
csvファイルを列数ごとに分割す...
-
エクセル形式のファイルの読み込み
-
csvファイルのデータの一部を取...
-
エクセルVBA 大容量CSVファイル...
-
CSVファイル作成
-
EXCEL|csvで保存→開くcsvを閉じる
-
CSVファイルの項目行を削除...
-
巨大なCSVの加工(指定列のみの...
-
データ解析ソフトRでのファイル...
-
VBAでCSVファイルのデータを集...
-
【ExcelVBA】UTF-8の文字コード...
-
【C#】パス名で無効な文字
-
特定文字を入ってるCSVの特定の...
おすすめ情報