Excelへのインターフェースを実装しています。COM を使用して、C++ から直接 Excel を自動化しています。私のアプリケーションのほとんどは確実に動作しています。
ただし、ファイルが既に Excel で開かれているかどうかを検出できません。開いている場合は、シミュレーションを実行する前に閉じるようにユーザーに通知したいと思います。
MFC、VB、または .NET を使用していません。私のソリューションは、Excel バージョン 97 から 2010 で機能する必要があります。プログラムで Excel のバージョンを知ることができれば、Excel のバージョンごとに異なる手法を使用してもかまいません。
Excel がセッション ロックを作成したかどうかを判断するために、同じフォルダー内で "~$xxx" ("xxx" は元のファイル名) という名前のファイルを探していました。しかし、この手法は常に機能するとは限りません。
同様の質問は、プログラムでシミュレーションが開始されたら、ユーザーがファイルを書き込みモード (読み取り専用モードで問題ありません) で開けないようにしたいというものです。