Библиотека типов Excel / Delphi 2009 / неверный тип переменной - PullRequest
1 голос
/ 14 апреля 2009

Мы только что обновили приложение, которое использует библиотеку типов Excel, до Delphi 2009 от Delphi 2006. Я обнаружил, что почти ничего сейчас не работает - почти любой вызов Excel приводит к сообщению «Неверный тип переменной». Например, мы можем сделать: Sheet.Cells.Item [Row, Column] .Value: = Значение, где Sheet является ExcelWorksheet, а Value является Variant. Следующее, что мы видим в стеке, - это вызов _DispInvoke в Variants, а затем в ComObj. Что я делаю не так?

Ответы [ 2 ]

2 голосов
/ 14 апреля 2009

Оказалось, что у нас есть общая процедура для установки значения ячейки вида:

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;

Мне кажется, что Delphi 2009 делает что-то другое с вариантами (по крайней мере, чем D2006), что-то, что не нравится COM, если у кого-то нет лучшего объяснения? Как бы то ни было, я рад пока что обойти это решение.

2 голосов
/ 14 апреля 2009

Я могу посоветовать вам заново создать / импортировать библиотеку типов, если изменилась версия Excel или Delphi. Использование TLB из других версий часто приводит к этим проблемам.

...