Delphi - 7. офис - 2003 SP3.
Вроде убила все процессы Excel, открыла книгу, запустила по новой. То что одна книга открыта - определилось, но вот название получать не хочет ни в какую.
Причем не понятно как избавиться от ошибки с тем что не определяется ни одна книга - каким образом отследить что у пользователя не запущены "лишние" процессы?
| Код | var xl: TExcelApplication; ASheet: TExcelWorksheet; AWorkBook: TExcelWorkbook; i:byte; str: string; begin xl:=TExcelApplication.Create(nil); try XL.ConnectKind := ckRunningInstance; //присоединяемся к открытому процессу экселя {ckRunningInstance ckRunningInstance} XL.Connect; //подключаемся XL.AutoQuit := False; //автозакрытие экселя нам тоже не нужно XL.Interactive[lcid] := true; //разрешаем пользователю работать с этим экземляром excel -- сомнительно XL.UserControl := True; XL.ScreenUpdating[lcid] := False; //ЗАПРЕЩАЕМ ПЕРЕРИСОВКУ ЭКРАНА ДЛЯ УСКОРЕНИЯ РАБОТЫ //подключаемся к открытой книге. имя книги из объекта настроек (ОН) if XL.Workbooks.Count=0 then ShowMessage('Нет ни одной открытой книги Excel!') else begin for i:=1 to XL.Workbooks.Count do begin if XL.Workbooks.Item[i].Name=St.BookName then begin str:='yes'; break; end else str:='fail!' end; end; //взять даные из листа эксель в объект расчеты
finally //отключаемся от экселя XL.UserControl := True; //отдали управление пользователю XL.Disconnect; //отключились FreeAndNil(XL); //освободили память end;
|
Под отладчиком XL.Workbooks.Item[i].Name все время "Expression illegal in evaluator". :(
|