Exceltypes库/delphi2009 /坏variablestypes

我们刚从Delphi 2006更新了一个使用Exceltypes库到Delphi 2009的应用程序。我发现现在几乎没有任何东西可用 – 几乎所有对Excel的调用都会产生一个消息“Bad variable type。”。 例如,我们可以这样做:Sheet.Cells.Item [Row,Column] .Value:=其中Sheet是ExcelWorksheet的值,Value是Variant。 我们在堆栈中看到的下一件事是调用Variants中的_DispInvoke,然后调用ComObj。 我究竟做错了什么?

如果Excel或Delphi版本发生变化,我build议您重新创build/重新导入types库。 使用其他版本的TLB通常会产生这些问题。

原来,我们有一个通用的过程来设置一个格式的单元格的值:

procedure SetValue(aSheet: ExcelWorksheet; aRow, aCol: Integer; aValue: Variant) begin aSheet.Cells.Item[aRow, aCol].Value := aValue; end; 

这与我提到的错误失败。 如果我改变这个:

 procedure SetValue(aSheet: ExcelWorksheet; aRow, aCol: Integer; aValue: Variant) var sValue: WideString; begin sValue:= aValue; aSheet.Cells.Item[aRow, aCol].Value := sValue; end; 

对我来说这意味着delphi2009年正在做一些不同于变种的东西(比D2006至less),COM不喜欢的东西,除非有更好的解释? 无论如何,我很高兴暂时解决这个问题。