繁体   English   中英

无法获取OLEObject类的Object属性-Excel Interop

[英]Unable to get the Object property of the OLEObject class - Excel Interop

我已经用谷歌搜索了这个问题,还没有找到解决方案。 如果文件另存为.xls而不是.xlsm,则此代码有效。 我正在使用Office 2013(32位)。

我已经编写了一个COM公开的C#类库。 excel工作簿实例化一个对象,并传递对当前工作簿的引用。 然后,该对象调用excel对象,并在第一张纸上更新Label1的标题。

我已经打开了所有信任中心设置(它与.xls文件一起使用),并且无论如何该.xlsm文件都不受保护。

我已经尝试了几种不同的方法来更新标题,我已经确保我正在使用OLEObjects但它仍然抛出Unable to get the Object property of the OLEObject class

//Method 1
OLEObject label = this._currentBook.ActiveSheet.OLEObjects(1);
label.Object.Caption = "New text";
//
//Method 2
int index = -1;
foreach (OLEObject obj in this._currentBook.ActiveSheet.OLEObjects)
{ 
  if (obj.Name.ToUpper() == "LABEL1") 
  {
    index = obj.Index;
  }
}
if (index >= 0) 
    this._currentBook.ActiveSheet.OLEObjects(1).Object.Caption = "Some text";
//
//Method 3
this._currentBook.ActiveSheet.OleObjects("Label1").Object.Caption = "Different text";

该代码必须在类库中进行,因为这是我需要遵守的业务规则。 excel vba仅实例化我的类对象,而托管代码则完成其余的工作。

解决方案是从%APPDATA%和%TEMP%中删除所有.exd文件,因为...

发生此问题的原因是出于安全原因,某些可编写脚本的控件在Office 2013中已过时。 这是设计使然,并且会出现这些错误。 通过使用仅适用于这些控件的特定于版本的kill-bit来禁用这些可编写脚本的控件,并且仅当在文档中使用它们时才会发生这种情况。 我们建议您不要尝试将可脚本编写的控件直接嵌入文档中,因为这种行为可能会降低系统安全性

感谢yay_excel为我提供的帮助。 这是帮助我的页面:

http://www.excelforum.com/excel-programming-vba-macros/1060133-run-time-error-1004-on-certain-machines.html

依次指向此MSDN知识库文章: MSDN

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM