1
我正在用Excel 2010和VSTO 4開發.NET 4.0(C#)中的Excel加載項。 在我的Excel存取器類中,我有一個屬性「CurrentWorkbook」,它返回VSTO擴展活動工作簿:GetVstoObject失敗,出現AccessViolationException
public Microsoft.Office.Tools.Excel.Workbook CurrentWorkbook
{
get
{
if (Globals.ThisAddIn.Application.ActiveWorkbook == null) return null;
return Globals.Factory.GetVstoObject(Globals.ThisAddIn.Application.ActiveWorkbook);
}
}
通常情況下,這工作正常。但也有一些情況,其中GetVstoObject
失敗,並AccessViolationException
:
at Microsoft.VisualStudio.Tools.Office.Runtime.Interop.IHostItemFactoryNoMAF.CreateProvider(Object document)
at Microsoft.Office.Tools.Excel.WorkbookImpl.GetVstoObject(_Workbook workbook, IServiceProvider serviceProvider, UInt32 officeVersion)
at Microsoft.Office.Tools.Excel.ApplicationFactoryImpl.GetVstoWorkbook(_Workbook workbook)
at Microsoft.Office.Tools.Excel.ApplicationFactoryImpl.GetVstoObject(_Workbook workbook)
at TNPExcelAddIn2.ConnectionLayer.ExcelAccess.ExcelAccessor.get_CurrentWorkbook()
提示: 在錯誤的情況下Globals.ThisAddIn.Application.ActiveWorkbook
不null
,但在調試器,你可以看到,底層Sytem.__ComObject
有點「腐敗」,因爲它m_ObjectToDataMap
是null
。
- 任何猜測?
- 我該如何處理?
- 或者如何在使用
GetVstoObject
之前「測試」System.__ComObject
?
感謝的提前你的答案, 約爾格