■
VBSコード
csvファイルを1行づつ読み込み、特定の列に特定の値があった場合その行をスキップする。それ以外なら新しく作ったcsvファイルに出力するコード。ハイエナコード。
Option Explicit
'------------------
Dim objFso
Dim objWshShell
'------------------
Dim InfilePath
Dim OutfilePath
'------------------
Dim InObjFile
Dim OutObjFile
'------------------
Dim OutFileCreate
'------------------
Dim instr
Dim workary
'------------------
Dim incnt
Dim skipcnt
Dim outcnt
'------------------
Set objFso = WScript.CreateObject("Scripting.FileSystemObject")
Set objWshShell = WScript.CreateObject("WScript.Shell")
'入力ファイルパス
InfilePath = "ファイル名.csv"
Set InObjFile = objFso.OpenTextFile(objWshShell.CurrentDirectory & InfilePath )
'出力ファイルパス
OutfilePath = "ファイル名.csv"
'前回出力ファイル削除
If objFso.FileExists(objWshShell.CurrentDirectory & OutfilePath) Then
'ファイルが存在する場合の処理
objFso.DeleteFile objWshShell.CurrentDirectory & OutfilePath
End If
'出力ファイル作成
Set OutFileCreate = objFso.CreateTextFile(objWshShell.CurrentDirectory & OutfilePath)
OutFileCreate.Close
'出力ファイルオープン
Set OutObjFile = objFso.OpenTextFile(objWshShell.CurrentDirectory & OutfilePath, 8)
'メイン
If Err.Number = 0 Then
'カウンタの初期化
incnt = 0
skipcnt = 0
outcnt = 0
'ファイルの内容を1行ずつ配列に格納
Do Until InObjFile.AtEndOfStream
'中身を保ったまま配列の大きさを拡張
'redim Preserve aryRet(incnt)
'1行読み込んで配列に格納
'aryRet(incnt) = InObjFile.ReadLine
'行を変数へ
instr = InObjFile.ReadLine
'カンマ区切りで分割して配列に
workary = Split(instr,",")
'特定の値はスキップ ↓例:2列目の値が"100"ならスキップ
If workary(1) = """100""" Then
'スキップ件数カウント
skipcnt = skipcnt + 1
Else
'csv出力
OutObjFile.WriteLine(instr)
'出力件数カウント
outcnt = outcnt + 1
End If
'入力件数カウント
incnt = incnt + 1
Loop
'ファイルをクローズ
InObjFile.Close
OutObjFile.Close
'件数表示
WScript.Echo incnt & "件読み込み," & skipcnt & "件スキップ," & outcnt & "件出力"
Else
'エラーの内容(Description)出力
WScript.Echo "ファイルが開けません: " & Err.Description
End If