カレントディレクトリに入ってるExcelブックを1つずつ処理する

カレントディレクトリに入ってるExcelブックを1つずつ開いて、特定のシートを選択して、特定の列をパーズして、○×の件数を求めるスクリプト書いた。

var excel = WScript.CreateObject("Excel.Application");
excel.Visible = true;
excel.DisplayAlerts = false;
var shell = WScript.CreateObject("WScript.Shell");
var fs = WScript.CreateObject("Scripting.FileSystemObject");
var folder = fs.GetFolder(shell.CurrentDirectory);
var files = new Enumerator(folder.Files);
WScript.Echo("シート名\tOK件数\tNG件数");
for(files.moveFirst(); !files.atEnd(); files.moveNext()){
  if(files.item().Name.search(/.+\.xls$/) >= 0){
    var file = files.item().Name;
    var fullPath = folder + "\\" + file;
    var book = excel.Workbooks.Open(fullPath);
    var sheet = book.Worksheets("Sheet1");
    var last = sheet.UsedRange.Rows.Count;
    sheet.Range("A1:AZ65536").UnMerge();
    var OK = 0; var NG = 0;
    for(i = 1; i <= last; i += 1){
      if(sheet.Cells(i, 27).Value != null){
        if(sheet.Cells(i, 27).Value.indexOf("○") == 0){
          OK += 1;
        }
        if(sheet.Cells(i, 27).Value.indexOf("×") == 0){
          NG += 1;
        }
      }
    }
    WScript.Echo(file + "\t" + OK + "\t" + NG);
    book.Close();
  }
}
excel.Quit();

こんな感じで使う。

>cscript //nologo excel.js
シート名        OK件数  NG件数
Book1.xls       13      20
Book2.xls       10      7