3

我正在开发一个 Autodesk Revit 插件,它与 Excel 通信并在单元格上执行一些标准的读/写操作。我引用了 Microsoft.Office.Interop.Excel (v12.0.0.0),因为某些用户可能安装了 Office 2007 而不是 2010 或更高版本。我使用 Visual Studio 2013。这是代码的开头;

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):检索具有 CLSID (00024500-000-0000-C000-000000000046) 的组件的 COM 类工厂失败,原因是以下错误:80040154 未注册类(来自 HRESULT 的异常: 0x80040154 (REGDB_E_CLASSNOTREG))。

它适用于安装了 Office 2007/2010/2013 的多台 64 位/32 位计算机。但它也不适用于具有相同规格的其他计算机。我怎样才能找出问题所在?

编辑:在此特定行返回错误: xlApp = new Excel.Application();

有人建议注册 dll,但这不适用于 Microsoft.Office.Interop; HRESULT:0x80040154(REGDB_E_CLASSNOTREG))

4

1 回答 1

1

我可能在这里找到了答案: Excel interop 在使用 Office 2007 的机器上工作,但在使用 Office 2010 的机器上失败

问题机器有 Office,但它设置为点击运行(从 Internet 运行)而不是基于 MSI(从 EXE 运行)。这意味着某些注册表设置、DLL、组件等对 Microsoft.Office.Interop.Excel 不可用,因此会失败。

可以从 Office 即点即用切换到基于 MSI 的 Office。

于 2014-03-04T14:30:54.217 回答