Проблема взаимодействия с Excel через VBA

Программирование для CATIA.

Проблема взаимодействия с Excel через VBA

Сообщение lexincton » 01 май 2012 21:21

Здравствуйте, периодически возникает проблема: после обработки макроса в процессах накапливаются excel-ие процессы, которые мешают нормальной работе макроса. Как с ними бороться? (в макросе рабочуу книгу закрываю через close и еще все приложение через excel.quit) Предполагаю, что выходить на процессы и просто их убивать!
Но главная проблема возникла недавно: 2 почти одиннаковых скрипта, один работает, другой на первой же строке Dim Excel As Excel.Application говорит что не найдено объекта или библиотеки. Подскажите, кто сталкивался...
lexincton
Участник
Участник
 
Сообщения: 75
Images: 0
Зарегистрирован: 29 янв 2012 23:48
Откуда: Россия

Re: Проблема взаимодействия с Excel через VBA

Сообщение file » 01 май 2012 21:42

Попробуйте сначала закрыть рабочую книгу (с сохранением или без), закрыть экземпляр Excel, а потом переменной, хранящей объект экземпляра Excel присвоить значение Nothing.
Код: Выделить всё
oWbk.Close SaveChanges := False
oExcel.Quit
Set oExcel = Nothing
file
Новичок
Новичок
 
Сообщения: 47
Зарегистрирован: 02 янв 2011 22:44

Re: Проблема взаимодействия с Excel через VBA

Сообщение Wireless_Fidelity » 01 май 2012 23:08

У первого "одинакового скрипта" в References отмечена библиотека Microsoft Excel, а у второго нет.
Аватара пользователя
Wireless_Fidelity
Активный участник
Активный участник
 
Сообщения: 394
Зарегистрирован: 10 апр 2010 00:11

Re: Проблема взаимодействия с Excel через VBA

Сообщение lexincton » 02 май 2012 19:34

Wireless_Fidelity писал(а):У первого "одинакового скрипта" в References отмечена библиотека Microsoft Excel, а у второго нет.

Спасибо! Только интересно, почему она пропала, сначала-то все работало.
Для file: добавление переменной ничего не изменило, также процессы копятся(
Еще вопрос, в xml макросы работают в разы быстрее, но не нашел как поставить общий доступ, а надо! это можно сделать?
lexincton
Участник
Участник
 
Сообщения: 75
Images: 0
Зарегистрирован: 29 янв 2012 23:48
Откуда: Россия

Re: Проблема взаимодействия с Excel через VBA

Сообщение Wireless_Fidelity » 02 май 2012 21:26

Ключевой момент здесь не добавление переменной, а вызов oExcel.Quit()
Альтернативный метод oExcel.Application.Quit()
Если после этого процесс остаётся, значит метод не был вызван, ищите ошибку в своём коде.

Про xml совсем не понял. Поясните, пожалуйста.
Аватара пользователя
Wireless_Fidelity
Активный участник
Активный участник
 
Сообщения: 394
Зарегистрирован: 10 апр 2010 00:11

Re: Проблема взаимодействия с Excel через VBA

Сообщение lexincton » 02 май 2012 21:46

Wireless_Fidelity писал(а):Ключевой момент здесь не добавление переменной, а вызов oExcel.Quit()
Альтернативный метод oExcel.Application.Quit()
Если после этого процесс остаётся, значит метод не был вызван, ищите ошибку в своём коде.

Про xml совсем не понял. Поясните, пожалуйста.

Процессы тоже не всегда копятся, а по пока непонятному принципу, некоторое время нормально все рабботает, потом появляется двойник процесса и после этого уже прибавляются после каждого вызова.
Про xml: в качестве файла обработки опробовал .xml , если в excel макрос обрабатывается с полминуты, то в .xml всего пара секунд, но excel-ому файлу можно сделать общий доступ для нескольких пользователей, а .xlm не дает это сделать средствами xml-editor mccsoft office и при пока он открыт у одного другой не может его менять.
lexincton
Участник
Участник
 
Сообщения: 75
Images: 0
Зарегистрирован: 29 янв 2012 23:48
Откуда: Россия

Re: Проблема взаимодействия с Excel через VBA

Сообщение Wireless_Fidelity » 02 май 2012 22:18

Такое поведение процесса говорит о том, что где-то в коде есть косяк.

В отличие от экселевского формата Xml это обычный текст, он и должен обрабатываться мгновенно.
Есть целая наука об организации одновременного доступа к файлам. Самое простое - открывать не файл, а его копию, но при этом сохранять изменения в оригинальный файл. Опять-таки, не изобретайте велосипед.
Аватара пользователя
Wireless_Fidelity
Активный участник
Активный участник
 
Сообщения: 394
Зарегистрирован: 10 апр 2010 00:11

Re: Проблема взаимодействия с Excel через VBA

Сообщение lexincton » 02 май 2012 22:34

Wireless_Fidelity писал(а):Такое поведение процесса говорит о том, что где-то в коде есть косяк.

В отличие от экселевского формата Xml это обычный текст, он и должен обрабатываться мгновенно.
Есть целая наука об организации одновременного доступа к файлам. Самое простое - открывать не файл, а его копию, но при этом сохранять изменения в оригинальный файл. Опять-таки, не изобретайте велосипед.

А что вы имеете ввиду под изобретением велосипеда??
lexincton
Участник
Участник
 
Сообщения: 75
Images: 0
Зарегистрирован: 29 янв 2012 23:48
Откуда: Россия

Re: Проблема взаимодействия с Excel через VBA

Сообщение Wireless_Fidelity » 02 май 2012 23:10

Возбмите любой понравившийся существующий алгоритм и реализуйте у себя в программе. Все уже придумано за нас :)

UPD

Пример с первой страницы выдачи гугла: http://www.cyberforum.ru/csharp-net/thread314619.html
Аватара пользователя
Wireless_Fidelity
Активный участник
Активный участник
 
Сообщения: 394
Зарегистрирован: 10 апр 2010 00:11


Вернуться в CAA-RADE

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

Сейчас этот форум просматривают: YandexBot и гости: 4