Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: ActiveX/СОМ/CORBA > delphi&Excel


Автор: Juice 14.12.2008, 04:13
XP, D7, 2003. OLE.

Господа, столкнулся с OLE-ошибкой. При выполнении данной строки выскакивает OLE error № 800A03EC. 
Код

    sht_dest.range[myRange].value:=sht_source.range[myrange].value;



sht_dest и sht_source - листы книг, соответственно.
Номер ошибки мне абсолютно ничего не сказал, но интуиция подсказала, что что-то здесь не так  smile 
Действительно! Пробежался по столбцу, на который мне показала эта самая интуиция вот этим кодом
Код

  while (sht_source.cells[i, 3].text<>'') do
  begin
  showmessage(inttostr(i)+#13+#10+inttostr(length(sht_source.cells[i, 4].text)));
  inc(i);
  end;


с целью определения длины текста в ячейках. И что странное заметил - в одной из ячеек (на ней как раз затыкается прога), показывается длина текста 1024 байта, тогда как закинув ячейку в блокнот, увидел, что её содержимое более 1100.
Каким образом еще можно переносить диапазоны ячеек из одного листа в другой или как можно обойти данную ошибку? Может у кого есть работающий код, по переносу ячеек, содержащих более 1k символов?
Кстати, данная ошибка появляется в случае, если myRange является набором ячеек. Если же myRange:='C3:C3', то отрабатывает на ура и весь текст из одного листа в другой переносится как за здрасьте. Но это же редкостный гемор по одной ячейке за один проход цикла переносить!!!


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)