web-dev-qa-db-ja.com

Excelの相互運用-リモートプロシージャコールが失敗したか、RPC_E_SERVERFAULT

Excelを内部的に呼び出すC#アプリケーションがあります。これは、Microsoft.Office.Interop.Excel.dllを使用して行います。このアプリケーションはExcelを備えたほとんどのコンピューターで動作しますが、私のコンピューターでは動作しません。

元々、アプリケーションはHRESULT 0x800706BEで失敗していました(リモートプロシージャコールが失敗しました)。私はウェブ上で見つけたほとんどすべてのアドバイスを試しましたが、成功しませんでした。次に、MS Office 2013 Proをアンインストールし、Office 365v2013をインストールしました。アプリケーションは同じコード行で失敗しますが、HRESULT 0x80010105(RPC_E_SERVERFAULT)で失敗します。

Excelの相互運用を機能させるためにアドバイスできることはありますか?一部のWindowsサービスが開始されていないか、DCOMコンポーネントが登録されていないと思います。でもどれかわかりません。

詳細:

  • Windows 7 x64、MS Office 2013 Pro/365 ProPlus
  • C#アプリケーションです。 VSNET for .NET 4.0でコンパイルされていますが、アプリがVS2012 for .NET 4.5でコンパイルされている場合でも問題が発生します。さまざまなバージョンのMicrosoft.Office.Interop.Excel.dllを使用します。

私が重要だと考える3つの事実があります:

  • アプリケーションは他のコンピューターで動作するため、問題の原因はアプリケーションではありません。
  • Excel(2013)を(少し異なるバージョンで)再インストールしてもアプリケーションが動作しないため、Excel自体の問題ではない可能性があります。
  • SysInternalsのProcessMonitorを使用して、アプリケーションが本当にExcelのインスタンス化に成功し、Excelが.xlsxファイルを正常に読み取った(?)ことを確認しました。しかし、Excelは失敗します。

また、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イベントログには関連するものは何もありません(アプリが失敗したとき)。

  • ここに私が見つけたリンクのいくつかがありますが、提案が与えられていないか、役に立たなかった: link1link2 、...(2つ以上投稿することはできませんリンク)
4
xarx

長い研究の末、私はこの問題を解決することに成功しました link 。基本的に、この問題はサードパーティのExcel COMプラグインが原因で発生しました。私の場合は、「FoxitReader PDF Creator COM Add-in」でした。無効にすると、問題は解決しました。

プラグインを無効にする方法:Excel>ファイル>オプション>アドイン>管理、次に「COMアドイン」>移動を選択します。そして、問題のあるプラグインのチェックを外します。

11
xarx

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アドインを無効にすると、問題がすぐに修正されました。

2
Thomas Bailey