投稿者 YuO  (社会人) 投稿日時 2017/8/9 11:42:46
とりあえず,DataGridViewの行とExcelの行が1対1の対応をするのであれば,二重ループはいりません。
DataGridViewの行番号であるiでループを回して,Excelの行番号は(i + 2)を使えば良いです。
つまり,
"A" & (i + 2).ToString()
のように書けば"A2", "A3", ...となります。
2015以降,
$"A{i + 2}"
と書いても同じようになります。


0x800A03ECのCOMExceptionですが,状況に依存して色々な理由で出るようです。
とりあえず,魔界の仮面弁士さんの書かれているようにCOMの解放をきっちりやると起きなくなることもあるようです。

根本的には,Excelのオートメーションを使わなければCOMExceptionは発生しません。
EPPlusとかNPOIとかClosedXMLとかのライブラリが存在します。
使い方もExcelオートメーションとそれほど変わらないようですし,こちらに切り替えてみるのも良いでしょう。
# 選択基準はnuget.orgでExcelを検索して出てくる,オートメーションを使っておらず,書き込み可能な上位3つ。