C#如何从Excel启用宏的工作簿文件(xlsm)中读取/更新activex组合框

时间:2013-08-08 11:19:12

标签: c# excel com interop activex

我目前正在开发一个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)。

以下是我的环境的详细信息:

  • Windows 7 64位
  • MS Visual Studio 2008专业版
  • .NET 3.5 SP1
  • Microsoft Excel 14.0.6129.5000(32位)

作为项目引用,我添加了.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

关于可能是什么原因的任何想法?如果您已经知道如何从组合框中更改所选项目,请分享:)

谢谢!

0 个答案:

没有答案