2014-03-19 36 views
-1

我正在开发Excel-DNA的帮助下的Excel加载项,并且遇到超过255个字符的公式存在问题。我正在从不同代号的API中提取数据,在调用Array Resizer之前,这一切都很好。在DoResize()函数异常是在下面的代码行抛出。对Excel公式使用Excel-DNA ArrayResizer样本超过255个字符

//Set the formula into the whole target 
formulaR1C1 = (string) XlCall.Excel(XlCall.xlfFormulaConvert, formula, true, false, ExcelMissing.Value, firstCell); 

和异常描述如下:

Exception Type: System.InvalidCastException 
Exception Message: Unable to cast object of type 'ExcelDna.Integration.ExcelError' to type 'System.String'. 

我使用Excel 2013的32位与Excel-DNA 0.30。

+0

请参阅关于Excel-DNA Google小组的讨论:https://groups.google.com/forum/#!topic/exceldna/URF0fiIZnjg – Govert

回答

0

该错误可能是由于执行Excel-DNA ArrayResizer示例时使用的Excel C API调用的限制所致。历史上,Excel C API中的字符串限制为255个字符。在Excel 2007中,此限制已被删除(引入的Unicode字符串最多为64000个字符。)但是,许多C API函数尚未更新,仍只支持255个字符串。 xlfFormulaConvert功能似乎就是这样一种情况。

如果是这样,除了将整个ArrayResizer帮助器转换为使用COM自动化接口而不是C API之外,没有什么可做的。

您可能可以使用Excel定义的名称通过定义子公式的名称来缩短公式,也可以参考工作表中计算子部件的其他单元格。

更新:使用COM接口(http://support.microsoft.com/kb/213181)设置Range.FormulaArray时存在相同的限制。请参阅http://dailydoseofexcel.com/archives/2005/01/10/entering-long-array-formulas-in-vba/进行广泛的讨论和解决方法。

+0

解决方法http://dailydoseofexcel.com/archives/2005/01/10 /进入长阵列公式的in-vba /不起作用。 –

相关问题