【发布时间】:2014-04-06 02:15:18
【问题描述】:
我正在开发一个 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))
【问题讨论】:
-
您在项目中引用了哪个版本的 PIA?
-
即 v12.0.0.0,Embed Interop Types 为 False,Copy Local 为 True。
-
您是否尝试过针对 Office 2007 的 PIA 进行编译?
-
我也尝试了 Copy Local False 和 Embed Interop Types = True,但在同一台计算机上都不起作用。
-
我也尝试使用 v11.0.0.0 编译,没有成功
标签: c# office-interop revit