Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: ActiveX/СОМ/CORBA > Ошибка 'OLE error 800A03EC'


Автор: allknower 18.10.2007, 13:36
Код

Procedure .......
  ExcelApp.Connect;
   while finish>0 do
     begin
       try
         ExcelApp.WorkBooks.Open(Path,
                        EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam, 
                        EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam, 
                        EmptyParam,EmptyParam{,EmptyParam,EmptyParam},0);         
         ExcelApp.Application.EnableEvents := false; 

         WorkBk := ExcelApp.WorkBooks.Item[1{i}];    

         For i:=1 to WorkBk.Worksheets.Count do
           begin
             WorkSheet:=WorkBk.WorkSheets.Get_Item(i) as _WorkSheet;
             if WorkSheet.Name = SheetName then
               begin
                 bNaydeno:=True;
                 WorkSheet.Activate(LOCALE_USER_DEFAULT);  
               end;
             if bNaydeno then break;
           end;
//-----------------------------------------------------
         if cb1.Checked then           //rep1
           begin        
             WorkSheet.Range['B2',EmptyParam].QueryTable.Refresh(false);
             progress.Progress:=progress.Progress+p_tmp div 2;
             WorkSheet.Range['B29',EmptyParam].QueryTable.Refresh(false);
           //  progress.Progress:=position+p_tmp;
             progress.Progress:=30;
             cb1.State:=cbGrayed;
           end
         else
//      . . .
         if cb6.Checked then           //rep6
           begin
              WorkSheet.Range['B4',EmptyParam].QueryTable.Refresh(false); // возникает ошибка!!!
              WorkSheet.Range['F4',EmptyParam].QueryTable.Refresh(false);
              cb6.State:=cbGrayed;
              progress.Progress:=80;
           end;
    end; // while
end; // procedure

procedure TForm1.CB1Click(Sender: TObject); // При выборе checkBox'a finish инкрементируется, при переводе в состояние cbGrayed - дерементируется
begin
  if (sender as TCheckBox).Checked then inc(finish)
  else dec(finish);
end;



При выполнении кода ^^^ на строчке WorkSheet.Range['B4',EmptyParam].QueryTable.Refresh(false); вываливается ошибка:
user posted image


Цитата

Project Project1.exe raised exception class EOleException with message 'OLE error 800A03EC'. Process stopped. Use Step or Run to continue.


В чем я не прав?

Автор: iskatel2 25.12.2007, 11:53
Тупик при передаче данных в Excel

передаю ячейке Excel данные (string) c помощью следующей процедуры:

Код

  procedure ExelFill(var text:string; pnt:TExel_pnt);
  var
    txt:string;
  begin
      txt:= text;
      try
        ExcelWorksheet1.Range[pnt.stolbik , pnt.stroka].NumberFormat := '@';
        ExcelWorksheet1.Range[pnt.stolbik , pnt.stroka].HorizontalAlignment := xlCenter;
        ExcelWorksheet1.Range[pnt.stolbik , pnt.stroka].Font.Bold:=true;
      finally
          ExcelWorksheet1.Range[pnt.stolbik , pnt.stroka].Value2:=txt;
      end;
  end;


вызов следующий:

Код

  ins_pnt.stolbik:='E16'; ins_pnt.stroka:='E16';
  tmp_str:=FloatToStrF(SSD[n].AV,ffGeneral,4,3);
  ExelFill(tmp_str,ins_pnt);


часть данных (например данные - '0,2') выводиться без проблем

а часть (например данные - '0,8') выдаёт следующую ошибку "Raised exception class EOleException " OLE error 800A03EC"

НЕПОНИМАЮ! ! !  почему в первом случае ошибки нет а во втором ошибка? 

p.s. ячейки куда выводяться данные различные.

Автор: CTapMex 4.1.2008, 00:54
аналогичная ошибка у меня стала появляться недели как 2. вначале думал что дело в объеме данных которые вставляю в excel, т.к. при небольшом количестве все нормально, а много - и ошибка. копаю дальше ... 

Автор: CTapMex 4.1.2008, 13:54
все оказалось проще... точнее сложнее
в общем вот http://www.delphikingdom.com/asp/viewitem.asp?catalogid=920, как раз должна решить жту ошибку. мне помогла

Автор: sergey1 31.10.2010, 04:01
Модератор: Сообщение скрыто.

Автор: Akella 10.10.2014, 14:51
Может кому будет актуальная тема ещё.
Ошибка OLE error 800A03EC связана выходом за рамки диапазона.
Код

Var
 WorkBk : _WorkBook; //  определяем WorkBook
 WorkSheet : _WorkSheet; //  определяем WorkSheet
begin
....
...
  vType   := WorkSheet.Cells.Item[iRowIndex, iColumnIndex].Value


Если в iColumnIndex будет значение -1 (минус один), то будет ошибка, т.к. колонки с индексом -1 не бывает, в экселе колонки начинаются с единицы.

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