它实际上更可能是代表了兼容性问题,而不是PIA的运行时版本。
当它运行时别人的机器上与2007年,它的炸弹, 大概是由于不同 版本的互操作组件。
我知道它可能会“感觉”这种方式,但这种情况不太可能。 Excel 2007 PIA比2003 PIA更广泛,而不是更窄。可能会添加类型,成员和可选参数,但较旧的2003年签名将保持不变。因此,无论是通过2003年PIA还是2007年PIA进行操作,所有旧的2003年呼叫都将以同样的方式工作。当然,这不是100.00%的保证,但它可能在99.8%左右,是我的猜测。
我希望有人知道的方式来 动态改变,其中 组件由根据 的Office版本加载哪个/(越来越办公室 版本是从注册表容易)。
您需要使用反射,例如Assembly.LoadFrom方法。但我真的不认为你需要走这条路,诚实。事实上,为了证明它,您应该将程序集中的引用更改为2007版,编译它,然后运行。我敢打赌,你会得到同样的确切的错误。
但为什么会这样呢?你将如何解决它?
在Excel 2003和Excel 2007对象模型之间的兼容性问题很少,但也有一些。一个示例是Range.Cells.Count
属性,该属性返回Int32,其最大值为+4.3 bil。 (约)。但是,随着Excel 2007中引入更大的工作表,电子表格中的单元格数量实际上大约为17.2亿个。因此,如果范围太大(例如,包含整个工作表),Range.Cells.Count
将引发异常。相反,你必须调用Range.Cells.CountLarge
,因为它返回一个Int64,可以处理更大的结果。
所以它实际上很可能是代表兼容性问题的运行时版本,而不是PIA。因此,您应该隔离引发异常的行,并让我们知道错误消息是什么。然后,也许我们可以帮助...
- 迈克
“它的炸弹”并没有帮助我们帮助你。错误消息旨在诊断问题。不要因为你不了解他们而忽略他们,这里肯定会有人。 – 2010-05-27 23:10:11