我目前正在开发一个C#应用程序,用于打开,读取和更新Excel宏启用的工作簿文件(xlsm)。我能够读取和更新单元格,但我无法读取/更新ActiveX控件,特别是Combobox。
使用Excel = Microsoft.Office.Interop.Excel;
使用MSForm = Microsoft.Vbe.Interop.Forms;
我尝试了基于研究(http://forums.asp.net/t/1244356.aspx/1/10)的不同食谱来尝试阅读所选项目:
Excel.Shape aShape = xlWorkSheet.Shapes.Item(name);
Object o = aShape.OLEFormat.Object;
MSForm.ComboBox newBox =(MSForm.ComboBox)(((Excel.OLEObject)o).Object);
或者
Excel.OLEObject cb1 =(Excel.OLEObject)xlWorkSheet.OLEObjects(name);
MSForm.ComboBox combo1 =(MSForm.ComboBox)cb1.Object;
但是当我尝试运行代码时出现以下错误:
System.InvalidCastException:无法将类型为“System .__ ComObject”的COM对象强制转换为接口类型“Microsoft.Vbe.Interop.Forms.ComboBox”。此操作失败,因为对IID为“{8BD21D33-EC42-11CE-9E0D-00AA006002F3}”的接口的COM组件的QueryInterface调用由于以下错误而失败:接口未注册(HRESULT异常:0x80040155)。
以下是我的环境的详细信息:
作为项目引用,我添加了.NET组件:
路径:C:\ Program Files(x86)\ Microsoft Visual Studio 9.0 \ Visual Studio工具用于Office \ PIA \ Office12 \ Microsoft.Office.Interop.Excel.dll
运行时版本:v1.1.4322
版本:12.0.0.0
路径:C:\ Program Files(x86)\ Microsoft Visual Studio 9.0 \ Visual Studio工具用于Office \ PIA \ Office11 \ Microsoft.Vbe.Interop.Forms.dll
运行时版本:v1.1.4322
版本:11.0.0.0
关于可能是什么原因的任何想法?如果您已经知道如何从组合框中更改所选项目,请分享:)
谢谢!