質問: どなたかご存知の方お教えいただきたいです。 現在開発中の機能で、「起動中のExcelにDBから取得した値を転記する」 という機能があります。 問題なく書き込みできる場合もあるのですが、どうも動作が不安定で、 転記できる場合とできない場合があります。 この機能を使用する業務は緊急を要する場合が多いので、 不安定さは解消する必要があり、困っています。 環境はWindows7Professioal、Excel2010 C# Visualstudio2012です。 起動時のメソッドは以下を使用しています。 Marshal.GetActiveObject( "Excel.Application" )
回答: ご質問の内容だけではわからないのですが、リリース漏れ問題の可能性も考えられると思いました。 COMオブジェクトはリファレンスカウンター方式のためリリース漏れがあるとそれ以降の動作が不安定になります。 リリース漏れ後は目に見えないExcelアプリケーションインスタンス(以下EAIと略)が残ってしまうので、見かけ上起動中のEAIが一つに見えても実際は複数存在している状態になります。この状態ではGetActiveObjectがどのEAIを返すかは保証されませんのでEAIへの操作結果が画面を持つExcel上に反映されたりされなかったりといったことが起こると思います。