Некорректная работа с Excel (раннее связывание)

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Anatole
Начинающий
Начинающий
 
Сообщения: 4
Зарегистрирован: 10.02.2008 (Вс) 7:14

Некорректная работа с Excel (раннее связывание)

Сообщение Anatole » 11.05.2008 (Вс) 10:37

Добрый день.
Такая проблема. Есть код в VB6, который открывает файл Excel, считывает данные в память (массив), закрывает открытый файл, обрабатывает данные, заново открывает новый файл в Excel, переносит в него результат, сохраняет этот файл под оригинальным названием и закрывает его. Все это делается через раннее связывание. А именно: объявлена публичная переменная
Public objExcel As Excel.Application
каждое открытие сопровождается
Set objExcel = New Excel.Application
и каждое закрытие -
objExcel.Quit
и
Set objExcel = Nothing
Я мониторил через диспетчера Windows появление и закрытие процесса EXCEL. Если при первом открытии и чтении файла он аккуратно открывается, файл считывается и процесс EXCEL закрывается, то во второй раз, когда создается и сохраняется файл с результатами, процесс открывается, файл сохраняется, код аккуратно проходит через инструкции
objExcel.Quit
и
Set objExcel = Nothing
но процесс EXCEL сохраняется!!! Причем при дублировании
objExcel.Quit
и
Set objExcel = Nothing
появляется ошибка, потому как VB6 считает, что все уже закрыто, переменная пуста.
Что сделать, чтобы процесс Excel аккуратно выгружался после сохранения файла с результатами?
Спасибо.

Avtopic
Постоялец
Постоялец
 
Сообщения: 442
Зарегистрирован: 30.09.2005 (Пт) 17:15
Откуда: Tbilisi

Сообщение Avtopic » 11.05.2008 (Вс) 11:38

С рассказа видно, что ты не даешь времени Excel для чего-то.
Наверно не даешь времени после первого закрытия... , или времени для сохранения...
Для определения этого, постав искусственные паузы в нескольких местах.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот и гости: 57

    TopList