Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.07.2009, 15:31   #1
alvazor
Форумчанин
 
Регистрация: 02.07.2009
Сообщений: 122
По умолчанию excel+vba странности взаимодействия при сохранении книги без макросов

Увадаемые коллеги!
Нигде не смог найти ответа, подскажите, вдруг сталкивались?!
При отладке ПО (расчеты в книге, интерфейс - в форме vba) столкнулся с ситуацией, когда компиляция программы и первый сеанс работы проходят без ошибок, а при повторном запуске после выхода из программы с сохранением книги, в процессе работы программы дает ошибку excel (не дебугер vba!) - в стандартном окне с извинениями...
Программа объемная. В книге использованы 5 листов, многостраничная форма, более 300 controls. Активация формы из workbook.open, выход - только по спец. клавише (гасится форма, обнуляется ряд данных в книге, книга сохраняется без запроса, закрывается с выходом из exel)
И вот если просто открыть книгу, отключив макросы и, ничего не меняя снова сохранить ее через меню - то при последующем открытии уже с макросами все работает без сбоев (до следующего запуска после сохранения книги из программы). Что же происходит при операции сохранения книги, устраняющее ошибку excel? Динамических элементов в книге нет. Я бы тупо воспроизвел автоматически такую операцию, но из vba это не сделаешь. Поделитесь мыслями, пожалуйста
alvazor вне форума Ответить с цитированием
Старый 02.07.2009, 15:48   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Скорее всего, один из встроенных глюков Excel.
Обычно Майкрософт в таких случаях рекомендует поставить последний сервиспак.

Кстати, в этом стандартном окне с извинениями есть опция типа "Отправить отчёт в Майкрософт". Вы ей пользовались, или всегда отказывались от отправки отчёта?
Если отправить отчёт, в ответ через какое-то время приходит сообщение с рекомендациями. Порой пишут, что эта ошибка им известна, и пофиксена в таком-то сервиспаке.

Я тоже раньше часто видел эту ошибку.
Потом поставил другую версию Офиса (2003 sp2 после 2003sp1), и теперь у меня Excel вылетает гораздо реже.
Лучше сразу поставьте SP3, если он у Вас ещё не установлен (и если у Вас Excel 2003)
EducatedFool вне форума Ответить с цитированием
Старый 02.07.2009, 16:23   #3
alvazor
Форумчанин
 
Регистрация: 02.07.2009
Сообщений: 122
По умолчанию

спасибо за оперативную реакцию!
Беда в том, что программа рассчитана на пользователей, которые спецы по технологии, но с трудом ориентируются в ПО (даже с установкой сервиспака проблемы - многие и термина не слышали). На худой конец, придется передавать и сервиспак, и инструкции по его установке, но это крайне нежелательно. Знать бы суть происходящего при сохранении - нашелся бы вариант решить проблему. Чувствую, что при выходе из макроса с сохранением книги надо соблюсти какие-то дополнительные условия, но не соображу какие.
Например, ранее не исключил в макросе зависимость старта формы от того, какой лист активирован в книге - была лавина сбоев именно exel, без диагностики со стороны vba. Похоже, что-то такое еще осталось....Чем думаем, то и получается
alvazor вне форума Ответить с цитированием
Старый 02.07.2009, 16:26   #4
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Причина может быть в чём угодно.
Выкладывайте свою программу, посмотрим.

Обычно такие проблемы решаются методом исключения - понемногу урезаем код (или количество листов \ строк на них), и смотрим, когда глюк перестанет проявляться.
Но в Вашем случае это займёт уйму времени.
Придётся искать другой способ.

Цитата:
закрывается с выходом из exel
Скорее всего, проблему удастся обойти, если не закрывать Excel вместе с файлом.
Или придумать другой способ закрытия Excel.

Последний раз редактировалось EducatedFool; 02.07.2009 в 16:28.
EducatedFool вне форума Ответить с цитированием
Старый 02.07.2009, 17:14   #5
alvazor
Форумчанин
 
Регистрация: 02.07.2009
Сообщений: 122
По умолчанию

Вы правы - убрал выход из эксела и ситуация изменилась:
- если не закрывая приложение запускаю файл двойным щелчком - сбой не возникает
- если запускаю его из списка "файл - открыть" - excel почему-то теряет путь к текущей папке (путь используется для открытия файла *.txt из макроса) - ну это другая проблема
- если приложение закрыть и потом запустить файл - вместо ошибки exel возникает глухой зависон
Пересылать файл пока вряд ли имеет смысл - 1,4 Мб , но главное - не все функции элементов формы отлажены - зря у Вас много времени уйдет. Да и по мелочи косяков много на разных версиях операцинки и эксела выползает - что на них отвлекаться.
Но обязательно прибегну к помощи, как добью ее, проклятую, в целом. Спасибо!
alvazor вне форума Ответить с цитированием
Старый 06.07.2009, 12:45   #6
alvazor
Форумчанин
 
Регистрация: 02.07.2009
Сообщений: 122
По умолчанию

EducatedFool
Попробовал CodeCleaner (v.5) - дает такой же разовый эффект, как и открытие книги без макросов с последующим сохранением. Т.е. Cleaner тоже что-то очищает....
Чем же все-таки отличается сохранение книги вручную без макросов от сохранения ее по команде макроса?
alvazor вне форума Ответить с цитированием
Старый 06.07.2009, 14:02   #7
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
Чем же все-таки отличается сохранение книги вручную без макросов от сохранения ее по команде макроса?
По сути, ничем. Только при отключенных макросах не выполняется компиляция VBA-проекта. При включенных макросах компиляция выполняется каждый раз при сохранении.
Цитата:
Т.е. Cleaner тоже что-то очищает....
Очищает, но вряд ли дело в этом.
CodeCleaner по окончании очистки сохраняет обработанный файл, при этом VBA-проект НЕ компилируется.

Проблема, как мне кажется, вот в чём:
Цитата:
но главное - не все функции элементов формы отлажены
Будет файл - посмотрим. А так ничего не могу посоветовать.
EducatedFool вне форума Ответить с цитированием
Старый 06.07.2009, 17:22   #8
alvazor
Форумчанин
 
Регистрация: 02.07.2009
Сообщений: 122
По умолчанию

Цитата:
Сообщение от EducatedFool Посмотреть сообщение
По сути, ничем. Только при отключенных макросах не выполняется компиляция VBA-проекта. При включенных макросах компиляция выполняется каждый раз при сохранении.
даже если изменений в программу не вносилось (кроме изменяемых данных, разумеется)?
alvazor вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Stack Overflow при сохранении Shouldercannon Общие вопросы Delphi 1 20.05.2009 11:46
кривая кодировка при сохранении в txt SarahConner Общие вопросы Delphi 7 28.04.2009 15:33
Автоматический запуск макросов с листа на котором указан перечень макросов с параметрами и без Neoli Microsoft Office Excel 2 09.03.2009 14:31
Excel без VBA kwvdr Microsoft Office Excel 1 26.12.2008 20:11
Как запустить макрос при изменении другой книги Excel? Град Microsoft Office Excel 12 10.06.2008 10:01