【发布时间】:2013-06-12 07:11:57
【问题描述】:
我正在开发一个相当全面的 Excel 插件,应用了很多操作。制作工作簿,以新名称保存,应用操作(添加名称、更改公式等)。
通常它可以正常工作,但 .Net 有时会在我的几乎所有 CType 上抛出 InvalidCastException。当我确认错误并在完全相同的 Excel 工作簿上再次运行代码(不退出 Excel)时,不会发生错误。 InvalidCastException 可能在所有尝试的 40% 中发生,否则加载项成功。
最近,我不得不从 C# 转换为 VB.Net。我一直使用 CType,例如 Dim interior = CType(cl.Interior, Excel.Interior)(失败的语句之一)。该错误不会发生在同一个地方,而是在我的整个程序中发生,在转换范围时,对于For Each r As Excel.Range In largerRange 以及当我在For Each 中使用Object 和CType 到Excel.Range 时也是如此。在后一种情况下,我在 Range 中获取了一个 Object,但 Excel.Range 的 CType 失败。此时有什么方法可以检查对象吗?
我真的不知道为什么加载项有一次失败,而另一个却没有错误地完成,即使没有重新加载 Excel(或任何其他参与的 DLL)。
任何帮助将不胜感激!
PS:VS2010、.Net 3.5SP1、Excel 2007、导入 Excel = Microsoft.Office.Interop.Excel
【问题讨论】:
-
Martin,它是 VSTO 插件还是 Com?
-
Martin,如果你回到 SO,我很想知道你是否在这个项目中使用了版本控制。我有同样的问题,想知道它是否与git有关。