カレントディレクトリに入ってる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