Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Удаление из памяти Excel [D7, Win2k]


r9000 ©   (2004-07-02 08:31:00) 

Добрый день!

Не могли бы вы сказать, как можно удалить из памяти Excel?
Т.е. делаю так
if OpenDialog1.Execute then
begin
  ea:=CreateOleObject('Excel.Application');
  WB:=ea.WorkBooks.open(OpenDialog1.FileName,true);
  s:=WB.sheets[1].cells[1,2].value;
  for j:=2 to 3000 do
  begin
  s1:=WB.sheets[1].cells[j,1].value;
  s2:=WB.sheets[1].cells[j,2].value;
  s3:=WB.sheets[1].cells[j,3].value;
  s4:=WB.sheets[1].cells[j,4].value;
  Application.ProcessMessages;
  if (s1<>'') or (s2<>'') or (s3<>'') or (s4<>'') then
  begin
  ADOQuery1.Close;
  ADOQuery1.SQL.Clear;
  ADOQuery1.SQL.Add('insert into a_trunk (Route,System_,NA,ATS) VALUES('''+s1+''','''+s2+''','''+s3+''','''+s4+''')');
ADOQuery1.ExecSQL;end;

  end;
   ea.visible:=true;
вручную закрываю Excel, а он остается в памяти. Что делать?
Как его убрать?


r9000   (2004-07-02 11:34:00) [1]

Спасибо получилось!


Iconka   (2004-07-02 09:42:00) [2]

Мне нравится название темы :)
Я тоже хочу забыть этот Excel, Word и другие страшные слова....


Думкин   (2004-07-02 09:30:00) [3]

ComObj, ActiveX,


begin...end   (2004-07-02 09:28:00) [4]

uses ?


КаПиБаРа   (2004-07-02 09:26:00) [5]

..пииип.. Какой? Полный текст ошибки.


r9000   (2004-07-02 09:13:00) [6]

Необьявленный идентификатор


КаПиБаРа   (2004-07-02 09:11:00) [7]

Как ругается?


r9000   (2004-07-02 08:58:00) [8]

Ругается на строчку
Result := GetActiveObject(ProgIDToClassID(AppProgID),nil,Unknown);


Думкин   (2004-07-02 08:37:00) [9]

Да, try надо еще всунуть перед одной строкой.


Думкин   (2004-07-02 08:35:00) [10]

var
   Excel : OleVariant;
   AppProgID : string;
   ServerIsRunning : boolean;
   Result : HResult;
   Unknown : IUnknown;
begin
    AppProgID := 'Excel.Application';
    ServerIsRunning := false;
    Result := GetActiveObject(ProgIDToClassID(AppProgID),nil,Unknown);
    if Result = MK_E_UNAVAILABLE
     then Excel := CreateOleObject(AppProgID)
     else begin
       Excel := GetActiveOleObject(AppProgID);
       ServerIsRunning := true
     end;
    Excel.Visible := true;
    .....
    finally
     if not ServerIsRunning then Excel.Quit;
     Excel := Unassigned
    end;


У Тенцера сие.


Наверх

Титульная страница Поиск, карта сайта Написать письмо