投稿者 とくま  (社会人) 投稿日時 2024/3/27 09:31:18
ある程度、次の回答を書いちゃってたので備忘録追記(汗)。

>> ところで別プロセスとは? Excel.exe ですか?
> 「Excel.exe」です。
一般的に起動済みのアプリケーションに割り込みをかける(=アタッチする)場合は、
アタッチ先のアプリケーションと同等のプログラムが必要になります。
この場合、Excel.exe 本体を利用しないとほぼ実現不可能です。

EPPlus は「データ保存ファイル」編集ライブラリです。
Excelデータ保存ファイルの実態は、XMLファイルをZIP圧縮したものです。
このため、ZIP解凍機能と、テキスト編集機能があれば編集できます。
機能を最小限にしているため、高速です。

これに対し、起動済みのアプリケーションである Excel が展開している機能は
セルに分割された表示機能、セルによる編集機能、セル参照式演算機能、etc...
何百倍ものプログラムが動いていて、その一つのセル表示機能を利用して
画面の表示を変更する流れになります。

なので、
【案1】ユーザが「Excel.exe」を実行していることが前提であるなら、
COM参照の解放など問題を多く含むものの、エクセルの機能を最大限利用できる
「Excel.exe」本体に頼むのが王道となります。使い古されたサンプルプログラムを
参考に、
System.Runtime.InteropServices.Marshal.GetActiveObject("Excel.Application")
から起動中のエクセル本体に割り込みをかける方法になります。

【案2】EPPlusで「データ保存ファイル」を編集するなら、
一度、起動済みのExcelプロセスを終了するため、編集中の画面表示データを「保存」し、
閉じた後、「データ保存ファイル」を編集してから開きなおす必要があります。

【案3】自分のプログラム(VB.NET)でExcel表示プログラムを作ってしまう。
つまりスプレッドシートなどを利用すれば、Excel表示編集アプリは比較的簡単に
作成できます。最初から自分のプログラムでExcelを表示しているなら、それを
編集するのは容易となります。

などが考えられると思います。