PDA

Просмотр полной версии : Кто работал в Delphi 7 и Excel2000?



lena
09.09.2004, 06:14
Помогите!!! Программа выдаёт ошибку при повторном запуске "программа Excel вызвала ошибку защиты памяти в модуле v8exe.dll по адресу 000f:000007a6" Мучаюсь, ничего не получается!
Делаю так:
ExcelApp1.Connect;
ExcelApp1.Workbooks.Add('Test', 0);
ExcelWB1.ConnectTo(ExcelApp1.ActiveWorkbook);
Sheet := ExcelApp1.Workbooks[1].Worksheets[1];
------------------------------------------------------------
{отсоеденимся от Excel}
ExcelApp1.DisplayAlerts[0] := DM.Ops.SaveToFile; // выводить/не выводить запрос о сохранении файлов
ExcelWB1.Close;
ExcelWB1.Disconnect;
ExcelApp1.Disconnect;
ExcelApp1.Quit;
WaitFormUnit.WaitFormForm.Visible := false;
Application.ProcessMessages;
{конец передачи в Excel}
Где искать ошибку??
Поделитесь опытом!
Заранее спасибо!! :?

Naeel Maqsudov
13.09.2004, 00:10
ExcelWB1.ConnectTo(ExcelApp1.ActiveWorkbook); - довольно странная манипуляция.

Я бы вообще отказался от использования ExcelWB1 (точнее от TExcelWorkbook).


var
ExcelWB1: ExcelWorkBook;
Sheet: Variant;
........

ExcelApp1.Connect;
ExcelApp1.Workbooks.Add('Test', 0);
ExcelWB1:=ExcelApp1.ActiveWorkbook;
Sheet:=ExcelWB1.ActiveSheet;

........


//А в конце
ExcelApp1.DisplayAlerts[0] := ...;
ExcelApp1.Quit;
ExcelApp1.Disconnect;
//Но никак не наоборот!



Попробуйте также:
ConnectionKind:=ckNewInstance и AutoQuit:=true;

Кроме того, ошибки могут возникать при запуске под отладчиком. Т.е. не нажимайте F9 в Delphi для запуска, а только компилируйте проект, а запускайте готовое приложение.


А еще объясните, что такое

WaitFormUnit.WaitFormForm.Visible := false;
Application.ProcessMessages;