我已经搜索了这个问题,一直没能找到解决方案。如果文件保存为.xls而不是.xlsm,则此代码有效。我正在使用Office 2013(32位)。无法获取OLEObject类的对象属性 - Excel Interop
我写了一个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只是实例化我的类对象,而托管代码则完成剩下的工作。