Помогите!!! Программа выдаёт ошибку при повторном запуске "программа 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}
Где искать ошибку??
Поделитесь опытом!
Заранее спасибо!! :?
Кто работал в Delphi 7 и Excel2000?
Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду
- Naeel Maqsudov
- Сообщения: 2570
- Зарегистрирован: 20 фев 2004, 19:17
- Откуда: Moscow, Russia
- Контактная информация:
ExcelWB1.ConnectTo(ExcelApp1.ActiveWorkbook); - довольно странная манипуляция.
Я бы вообще отказался от использования ExcelWB1 (точнее от TExcelWorkbook).
Попробуйте также:
ConnectionKind:=ckNewInstance и AutoQuit:=true;
Кроме того, ошибки могут возникать при запуске под отладчиком. Т.е. не нажимайте F9 в Delphi для запуска, а только компилируйте проект, а запускайте готовое приложение.
А еще объясните, что такое
Я бы вообще отказался от использования 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;