ユーザーが指定した範囲のセルに対して変換を実行する VSTO DLL を作成しました。私は次の方法でこれをやっています:
Globals.ThisAddIn.Application.EnableEvents = false;
int totRows=inputRange.Rows.Count;
int totCols=inputRange.Columns.Count;
for (int i = 1; i <= totRows; i++) {
for (int j = 1; j <= totCols; j++) {
if (((Range)inputRange.Cells[i, j]).Value2 != null) {
((Range)outputSheet.Cells[i, j]).Value2 = MyTransform(((Range)inputRange.Cells[i, j]).Value2);
}
}
}
Globals.ThisAddIn.Application.EnableEvents = true;
この方法では、1 時間あたり約 150 万個のセルを変更できます (MyTransform() で消費される時間は数えていません)。これは非常に遅いように思えます。
VSTO でセルを読み書きするより効率的な方法はありますか?
そうでない場合、これを XLL に変換する (おそらく Excel-DNA を使用する) 方が速くなりますか? いくらか推測できますか?