我已經搜索了這個問題,一直沒能找到解決方案。如果文件保存爲.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只是實例化我的類對象,而託管代碼則完成剩下的工作。