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