【发布时间】:2010-03-26 00:55:57
【问题描述】:
我正在开发一个 Excel 2007 VSTO 插件,该插件在客户端上引发 COM 异常,但在我的开发机器上调试时却没有。
插件的作用是捕获 Excel 的 Startup 事件,定义专门的样式,然后将事件处理程序添加到 SheetChange 事件。每当工作表中的值发生更改时,单元格都会设置为新样式。所有这些都是为了为用户提供一种查看他们已更改的单元格的方法。代码如下:
private void ThisWorkbook_Startup(object sender, System.EventArgs e)
{
this.BeforeSave += new Microsoft.Office.Interop.Excel.WorkbookEvents_BeforeSaveEventHandler(ThisWorkbook_BeforeSave);
this.SheetChange += new Microsoft.Office.Interop.Excel.WorkbookEvents_SheetChangeEventHandler(ThisWorkbook_SheetChange);
cfStyle = Globals.ThisWorkbook.Styles.Add("CFStyle", missing);
cfStyle.Font.Color = Excel.XlRgbColor.rgbOrange;
cfStyle.Font.Bold = true;
cfStyle.Interior.Color = Excel.XlRgbColor.rgbLightGray;
cfStyle.Interior.TintAndShade = 0.8;
cfStyle.Borders.LineStyle = Excel.XlLineStyle.xlContinuous;
cfStyle.Borders.Weight = Excel.XlBorderWeight.xlThin;
cfStyle.Borders.Color = Excel.XlRgbColor.rgbDarkSlateGray;
cfStyle.Borders[Microsoft.Office.Interop.Excel.XlBordersIndex.xlDiagonalDown].LineStyle = Excel.XlLineStyle.xlLineStyleNone;
cfStyle.Borders[Microsoft.Office.Interop.Excel.XlBordersIndex.xlDiagonalUp].LineStyle = Excel.XlLineStyle.xlLineStyleNone;
}
当它在 dev 中运行时,它运行完美。但是,当它在客户端计算机上运行时,一旦加载 VSTO 插件,我就会得到此异常详细信息。有趣的部分是它似乎在第一次 COM 交互时失败了,这恰好是设置 Style.Font.Color 属性。
以下是异常详情:
System.Runtime.InteropServices.COMException (0x800A03EC):HRESULT 异常: 0x800A03EC
服务器堆栈跟踪:
在 [0] 处重新抛出异常:
在 System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
在 System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(消息数据& msgData,Int32 类型)
在 Microsoft.Office.Interop.Excel.Font.set_Color(对象 )
在 TriQuint.DemandPlanning.Workbook.ThisWorkbook.ThisWorkbook_Startup(对象 发件人,EventArgs e)
在 Microsoft.Office.Tools.Excel.Workbook.OnStartup()
在 TriQuint.DemandPlanning.Workbook.ThisWorkbook.FinishInitialization()
在 Microsoft.VisualStudio.Tools.Office.EntryPointComponentBase.Microsoft.VisualStudio.Tools.Applications.Runtime.IEntryPoint.FinishInitialization()
在 Microsoft.VisualStudio.Tools.Applications.AddInAdapter.ExecutePhase(ExecutionPhases 执行阶段)
在 Microsoft.VisualStudio.Tools.Applications.AddInAdapter.CompleteInitialization()
在 Microsoft.VisualStudio.Tools.Office.Internal.OfficeAddInAdapterBase.ExecuteEntryPointsHelper()
有人见过这样的吗?我已经做了很多验证,例如确保 .NET、VSTO Interop、Excel 2007 等的正确版本。
提前感谢您的任何建议! 吉姆
【问题讨论】:
标签: c# .net-3.5 vsto excel-2007