Модераторы: MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Excel программно не закрывается, На 2х компах работает.На работе нет 
V
    Опции темы
Nowichok
Дата 4.8.2009, 16:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 41
Регистрация: 23.11.2006

Репутация: нет
Всего: нет



Создаю отчёт в Excel средствами Delphi.

Код


   if not VarIsEmpty(Excel) then
    Excel:=null;
   try
    Excel:=CreateOleObject('Excel.Application');
    Excel.Visible:=False;

    Excel.ErrorCheckingOptions.BackgroundChecking := False; 
    Excel.ErrorCheckingOptions.NumberAsText := False;
    Excel.ErrorCheckingOptions.InconsistentFormula := False;

    Excel.ScreenUpdating := FALSE;
   except
    exit
   end;

   Excel.Workbooks.Add;
   Excel.Workbooks[1].ActiveSheet.Name := '';
   Excel.WorkBooks[1].Sheets[1].Activate; 

   ...................

   Excel.ActiveWorkbook.SaveAs(MyDir+'\Report_to_Buh.xls');
   Excel.Workbooks[1].Close;
   Excel.Quit;
   Excel:=0;
 

Проблема в том, что на моём компе (Vista) всё работает. Файл создаётся. Excel-процесс закрывается самой delphi.
на другом компьютере (XP SP3) тоже всё работает.

на работе НЕТ !!! Там до ужаса тормознутые компы (ну вы знаете, как это бывает). Стоит вроде Windows 2k даже.
Так вот на работе отчёт создаётся, но процесс Excel.exe не убивается самой Delphi, Приходится это делать через диспетчер задач.

Как быть ? неужто ещё и писать код, чтобы он после создания отчёта отлавливал наличие процесса Excel.exe в памяти ??
PM MAIL   Вверх
rith2
Дата 4.8.2009, 18:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 83
Регистрация: 29.4.2008

Репутация: нет
Всего: нет



Попробуй..

Код

Excel:= nil;


Вроде в ФАКе такое было... пока не заНИЛишь переменную - процесс не убьется

Это сообщение отредактировал(а) rith2 - 4.8.2009, 18:36
PM MAIL   Вверх
Данкинг
Дата 4.8.2009, 19:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 5
Всего: 130



Код

excel:=unassigned;




--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Nowichok
Дата 5.8.2009, 18:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 41
Регистрация: 23.11.2006

Репутация: нет
Всего: нет



Хорошо, попробую на работе. 
А вот как раз сейчас столкнулся ещё с одной проблемой того же рода.
Простой код - надо было копинуть данные с одного листа Excel'я в новую книгу.
Код

type
  TForm1 = class(TForm)
    Button1: TButton;
    OpenDialog1: TOpenDialog;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    Excel:variant;
  end; 


.....
if not VarIsEmpty(Excel) then
    Excel:=null;
   try
    Excel:=CreateOleObject('Excel.Application');
    Excel.Visible:=False;
    Excel.ScreenUpdating := FALSE;
   except
    Exit;
   end;

 OpenDialog1.Execute;
 if OpenDialog1.FileName='' then
  exit;

 Excel.Workbooks.Open(OpenDialog1.FileName);
 Excel.Workbooks.Add;

........

 Excel.Workbooks[1].Close;
 Excel.Visible:=true;
 Excel:=unassigned;  // разные комбинации всех вариантов
 Excel.Quit;// разные комбинации всех вариантов
 Excel:=0;// разные комбинации всех вариантов


посдение 3 строчки хоть по отдельности, хоть все вместе ставь, но итог один - после работы программы Excel становтися видимым....точнее ПОЛУвидимым, видна только шапка, остального нет. Некое полуподвиснутое состояние Excel'я. Можно сохранить файл и заново открыть. Будет норм.
 Но сам программно Excel не отображается нормально ((. Этот глюк и на моём компьютере, про работу молчу даже smile.
 почему так?

 P.S. Хотя у меня стоит Vista SP2 x64,....



Это сообщение отредактировал(а) Nowichok - 5.8.2009, 18:57
PM MAIL   Вверх
Данкинг
Дата 5.8.2009, 19:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 5
Всего: 130



Цитата(Nowichok @  5.8.2009,  19:55 Найти цитируемый пост)
посдение 3 строчки хоть по отдельности, хоть все вместе ставь, но итог один - после работы программы Excel становтися видимым....

Ты же сам пишешь:
Код

Excel.Visible:=true;

 smile 


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Nowichok
Дата 6.8.2009, 18:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 41
Регистрация: 23.11.2006

Репутация: нет
Всего: нет



Это да - мне это и нужно !! Просто показал, что он становиттся полувидимым в подвиснутом состоянии. А мне надо ,чтобы нормально открылся файл после окончания операций программой
PM MAIL   Вверх
Данкинг
Дата 6.8.2009, 21:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 5
Всего: 130



Ну, не знаю, убей объект и заново его создай...

Вот такой код у меня рабочий:


Код

exx:=createoleobject('excel.application');
exx.visible:=true;
Exx.DisplayAlerts:=False;
exx.Workbooks.open(fn);


Это сообщение отредактировал(а) Данкинг - 6.8.2009, 22:19


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Nowichok
Дата 9.8.2009, 17:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 41
Регистрация: 23.11.2006

Репутация: нет
Всего: нет



!!!! Ошибка найдена.

При подключении к Excel писал для оптимизации кода :

Код

    Excel.ErrorCheckingOptions.BackgroundChecking := False; 
    Excel.ErrorCheckingOptions.NumberAsText := False;
    Excel.ErrorCheckingOptions.InconsistentFormula := False;

    Excel.ScreenUpdating := FALSE;


Это и приводило к тому, что при показе самого Excel'я он был не полностью прорисован.

Вот так. Решение как всегда было рядом smile
PM MAIL   Вверх
Данкинг
Дата 9.8.2009, 18:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 5
Всего: 130



Цитата(Nowichok @  9.8.2009,  18:56 Найти цитируемый пост)
При подключении к Excel писал для оптимизации кода :

Я вообще таких параметров не знаю даже и никогда, соответственно, их не использовал. smile 


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Nowichok
Дата 9.8.2009, 18:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 41
Регистрация: 23.11.2006

Репутация: нет
Всего: нет



Нашёл в просторах сети. В поисковике даже можно глянуть. Вот так - буду знать, что если что-то беру - нужно знать целесообразное применение.
PM MAIL   Вверх
Данкинг
Дата 9.8.2009, 19:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 5
Всего: 130



Nowichok, вот я всегда использую для создания и начала работы с Excel'ем только те строчки, которые написал. smile 


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: ActiveX/СОМ/CORBA"

Rrader
Girder

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


  • Литературу по Delphi обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Delphi
  • Вопросы по SQL и вопросы по базам данных, не связанные с Delphi, задавать здесь

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Rrader, Girder.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: ActiveX/СОМ/CORBA | Следующая тема »


 




[ Время генерации скрипта: 0.0562 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.