powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Помогите, проблемы с Excel
6 сообщений из 6, страница 1 из 1
Помогите, проблемы с Excel
    #32192955
Lana
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
на машине установлены Windows2000, Office XP, Delphi7

выполняется код
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
  
function GetExcelApp:variant;
begin
  Result:=Unassigned;
  try
    try
      Result:=GetActiveOleObject('Excel.Application');
    except end;
    if VarIsEmpty(Result) then Result:=CreateOleObject('Excel.Application');
  except
    ShowError('Не могу запустить Microsoft Excel'+# 13 +
                 'Возможно он не установлен на вашем компьютере.', '');
  end;
end;    

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

    ExcelApp:=GetExcelApp;

    ExcelApp.Visible:=True;
    ExcelApp.WindowState :=  2 ; // минимизируем, чтоб не мешался

    if VarIsEmpty(ExcelApp.ActiveWorkBook) then ExcelApp.WorkBooks.Add;
    else  WorkBook:=ExcelApp.ActiveWorkBook;

    WorkSheet:=WorkBook.WorkSheets.Add;

    WorkSheet.Rows( 1 ).Font.Bold:=True;
    ......
    ......



Проблема вот в чем, если Excel не был запущен, он успешно открывается, в нем создается новая книга, а на момент создания нового листа Excel благополучно умирает... ну и все валится....
Если же Excel уже был открыт, то все выполняется благополучно.... создается новый лист, и я могу нормально к нему обращаться...

Никто не знает в чем может быть дело? Пробовала запускать на другой машине, там стоит Windows2000, Office2000, ситуация точно такая же...

Когда у меня была установлена delphi5, все работало... правда с тех пор я переинсталлировала всю машину...
...
Рейтинг: 0 / 0
Помогите, проблемы с Excel
    #32192982
Papka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vrode stranno vigljadit kod:

if VarIsEmpty(ExcelApp.ActiveWorkBook) then ExcelApp.WorkBooks.Add;
else WorkBook:=ExcelApp.ActiveWorkBook;

Poluchajetsa chto WorkBook moget bit i ne opredelen, jesli vipolnjajetsa uslovije.
Moget nado tak:

if VarIsEmpty(ExcelApp.ActiveWorkBook) then ExcelApp.WorkBooks.Add;
WorkBook:=ExcelApp.ActiveWorkBook;
...
Рейтинг: 0 / 0
Помогите, проблемы с Excel
    #32193276
Denis Uskov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код лучше подредактировать
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
   ............
   ............
    try
      ExcelApp:=GetExcelApp;

      ExcelApp.Visible:=True; <- убрать
      ExcelApp.WindowState :=  2 ; <- убрать

      if VarIsEmpty(ExcelApp.ActiveWorkBook) then ExcelApp.WorkBooks.Add;
      else  <- убрать
      WorkBook:=ExcelApp.ActiveWorkBook;

      WorkSheet:=WorkBook.WorkSheets.Add;

      WorkSheet.Rows( 1 ).Font.Bold:=True;
    finally
      ExcelApp.Visible:=True;
      ExcelApp:=Unassigned;
    end
    ......
    ......
...
Рейтинг: 0 / 0
Помогите, проблемы с Excel
    #32193600
Lana
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо за комментари,
но тем не менее, кто может объяснить: почему к моменту создания нового листа Excel самоуничтожается? И это самоуничтожение происходит только если я программно запускаю Excel, если же Excel уже был открыт, то все работает идеально...
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
// это отрабатывает нормально
if VarIsEmpty(ExcelApp.ActiveWorkBook) then ExcelApp.WorkBooks.Add;
WorkBook:=ExcelApp.ActiveWorkBook;
// здесь Excel умирает
// и дальше уже ничего не работает
WorkSheet:=WorkBook.WorkSheets.Add;

...
Рейтинг: 0 / 0
Помогите, проблемы с Excel
    #32193679
Артем1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
WorkBook:=ExcelApp.ActiveWorkBook;
// здесь Excel умирает
// и дальше уже ничего не работает


Может, в этом месте последнее использование переменной Excel и Delphi автоматом после этой строчки вызывает _Release? Соответственно, Excel умирает.
...
Рейтинг: 0 / 0
Помогите, проблемы с Excel
    #32194728
Papka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
No ved jesli ti otkrivajesh Excel zanovo, to
WorkBook:=ExcelApp.ActiveWorkBook vernet chto-to tipa 'null'.
Nu tipa net u nego v tot moment vaase nikakogo aktivnogo book-a, t.k. pri takom zapuske avtomaticheski novaja pustaja kniga ne sozdajetsa. Togda uzh nado
WorkBook:=ExcelApp.WorkBook.Add. Nu chto-to tipa togo. Sintax smotri v Excel.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Помогите, проблемы с Excel
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]