Excelを内部的に呼び出すC#アプリケーションがあります。これは、Microsoft.Office.Interop.Excel.dllを使用して行います。このアプリケーションはExcelを備えたほとんどのコンピューターで動作しますが、私のコンピューターでは動作しません。
元々、アプリケーションはHRESULT 0x800706BEで失敗していました(リモートプロシージャコールが失敗しました)。私はウェブ上で見つけたほとんどすべてのアドバイスを試しましたが、成功しませんでした。次に、MS Office 2013 Proをアンインストールし、Office 365v2013をインストールしました。アプリケーションは同じコード行で失敗しますが、HRESULT 0x80010105(RPC_E_SERVERFAULT)で失敗します。
Excelの相互運用を機能させるためにアドバイスできることはありますか?一部のWindowsサービスが開始されていないか、DCOMコンポーネントが登録されていないと思います。でもどれかわかりません。
詳細:
私が重要だと考える3つの事実があります:
また、VS2010デバッガーを使用して、何が起こっているのかを調べました。
これがコードの中核です。 Openの最後の行で失敗します:
using Excel = Microsoft.Office.Interop.Excel;
object misValue = System.Reflection.Missing.Value;
Excel.Application myExcelApp = new Excel.Application();
myExcelApp.Visible = false;
myExcelWorkbooks = myExcelApp.Workbooks;
myExcelWorkbook = myExcelWorkbooks.Open(xlsxFileFullPath, misValue, misValue, misValue, misValue, misValue, misValue, misValue, misValue, misValue, misValue, misValue, misValue, misValue, misValue);
Windowsイベントログには関連するものは何もありません(アプリが失敗したとき)。
長い研究の末、私はこの問題を解決することに成功しました link 。基本的に、この問題はサードパーティのExcel COMプラグインが原因で発生しました。私の場合は、「FoxitReader PDF Creator COM Add-in」でした。無効にすると、問題は解決しました。
プラグインを無効にする方法:Excel>ファイル>オプション>アドイン>管理、次に「COMアドイン」>移動を選択します。そして、問題のあるプラグインのチェックを外します。
Xarxとまったく同じ問題がありました。突然、私が作成したアプリケーションが特定のPCで動作しなくなりました。クラッシュしたコードは次のとおりです。
Dim fname As String = "B:\Data Warehouse\Lists\WarehouseLists.xls"
Try
xlWorkBookList = xlAppLists.Workbooks.Open(fname,, False) 'open the raw data sheet
Catch ex As Exception
MessageBox.Show(ex.Message)
Exit Sub
End Try
Foxit Readerアドインを無効にすると、問題がすぐに修正されました。