wshで、excel触ってて気づいた
気づいた、というか、よくハマる。本当によくやるミスなのでメモっておく。
例えば、excelの1枚目のシートのA列に100個(A1〜A100)hogeを記入する場合。
これだとバグがある。
var g_fso = WScript.CreateObject("Scripting.FileSystemObject"); function getExcel_FirstSheet(filepath){ var fullpath = g_fso.GetAbsolutePathName(filePath); var exl = CreateObject("Excel.Application"); exl.Application.Visible = true; exl.Application.Workbooks.Open(fullpath); return exl.worksheets(1); } var sheet = getExcel_Firstsheet("c:\\testfile.xls"); for(var i=0;i<100;i++){ sheet.Rows(i).Columns("A").value = "hoge"; }
ソースはうろ覚えだけど、これだと間違いあり。Rows(0)の時にエラーが出る。
なぜなら、エクセルの列に0行目という概念はないから。1から始まるこれが正しい。
/** 中略 **/ var sheet = getExcel_Firstsheet("c:\\testfile.xls"); for(var i=1;i<101;i++){ sheet.Rows(i).Columns("A").value = "hoge"; }
いい加減覚えろよ。俺。
emacsを触ってたら気づいたら、elisp触ってて何がやりたかったのかを忘れて困るぐらい楽しいんだけど。
最近、excelも、そう言う感じでヤバい。生産性が低過ぎて困る。