我正在开发一个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))。
它适用于多台64位/ 32位计算机,并安装了Office 2007/2010/2013。但它也不适用于具有相同规格的其他计算机。我怎样才能找出问题所在?
编辑:在此特定行返回错误:xlApp = new Excel.Application();
有人建议注册dll,但这对Microsoft.Office.Interop不起作用; HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG))
答案 0 :(得分:0)
我可能在这里找到了答案: Excel interop works on machine with Office 2007 but fails on machine with Office 2010
问题机器有Office,但它设置为点击运行(在互联网上运行)而不是基于MSI(从EXE运行)。这意味着Microsoft.Office.Interop.Excel无法使用某些注册表设置,DLL,组件等,因此它失败。
可以从Office Click-to-Run切换到基于MSI的Office。