2014-03-04 40 views
2

我正在開發一個Autodesk Revit插件,它與Excel通信並對單元執行一些標準的讀/寫操作。我引用了Microsoft.Office.Interop.Excel(v12.0.0.0),因爲有些用戶可能安裝了Office 2007,而不是2010或更高版本。我使用Visual Studio 2013.以下是代碼的開頭部分;辦公室interop不能在多臺計算機上工作

Excel.Application xlApp; 
    Excel.Workbook xlWorkBook; 
    Excel.Worksheet xlWorkSheet; 
    object misValue = System.Reflection.Missing.Value; 

    xlApp = new Excel.Application(); 

然而,在某些計算機這將返回如下因素的錯誤:

的Revit遇到一個System.Runtime.InteropServices.COMException(0x80040154的):檢索COM類工廠CLSID組件(00024500-000- 0000-C000-000000000046)由於以下錯誤而失敗:80040154類未註冊(異常來自HRESULT:0x80040154(REGDB_E_CLASSNOTREG))。

它可以在多臺64位/ 32位計算機上安裝Office 2007/2010/2013。但它也不適用於具有相同規格的其他計算機。我怎樣才能找出什麼是錯的?

編輯:錯誤返回在這個特定的行:xlApp = new Excel.Application();

有人建議註冊dll,但這不適用於Microsoft.Office.Interop; HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG))

+0

您在項目中引用了哪個版本的PIA? –

+0

這就是v12.0.0.0,Embed Interop Types是False,Copy Local是True。 – user3086984

+0

您是否嘗試過針對Office 2007的PIA進行編譯? –

回答

0

我可能已經在這裏找到了答案: Excel interop works on machine with Office 2007 but fails on machine with Office 2010

問題機器有辦公室,但被設置爲的點擊運行(運行從互聯網上),而不是基於MSI(運行從EXE)。這意味着某些註冊表設置,DLL,組件等不可用於Microsoft.Office.Interop.Excel,因此它失敗。

可以從Office即點即用切換到基於MSI的Office。

+0

這是否意味着Office Interop完全失敗運行機器,甚至是遲綁定是不可能的? – kaefer

+0

我已經在使用基於MSI的安裝的機器上重新安裝了Office,現在它可以正常工作。 – user3086984

相關問題