Automation error разрушительный сбой excel

Обновлено: 07.07.2024

Ошибка возникает время от времени. Файл большой. Рабочая форма содержит много элементов, расположенных на 7 страницах multipage.
Заметил, что ошибка чаще возникает, когда добавлю элемент. но иногда и просто на пустом месте.
В подавляющем большинстве случаев вываливается во время сохранения файла. И всё. Сохранить не удается. ни в целом ни частями. Тогда возвращаюсь к старой версии, вношу изменения по памяти, и, как правило, всё сохраняется. Не прошу решить именно мою проблему. Прошу высказаться, если есть опыт решения сходных проблем в системе:

большой файл + большая форма + много элементов на форме + много кода + долго работает + косяк при сохранении изменений в программе (на форме)

"Затормаживание" EXCEL. Как бороться?
Добрый день. Вопрос не совсем по VBA, но думаю каждый стьалкивался с подобным. Дело в том что в.

Как бороться с переполнением стека
Мне нужно понять как бороться с переполнением стека. Есть управляющая процедура. изначально она.

Как бороться с утечками памяти в VBA?
Этот вопрос возник в другой теме. Но он важен сам по себе. Я не спец. И много здесь "неспецов". Но.

Outlook как бороться с диалоговым окном
Проблема такая, написал макрос Outlook 2002 - который анализирует входящую почту и отправляет всем.

Ну что тут сказать?

Уменьшить файл - уменьшить форму - уменьшить количество элементов на форме - уменьшить код - будет быстрее работать - исчезнет косяк при сохранении изменений в программе (на форме)

Разделите ваши вопросы на части.
Если косяк при сохранении - он решаем. Попробуйте:
1.
Наберитесь терпения и выделите время на эту работу.
Экспортируйте все листы, формы, модули и классы.
Создайте новую книгу и ипортируйте в нее все что у вас было.
2.
Попробуйте сохранить в формате 97-2003 Excel
Верните в ваш формат обратно.
3.
Почистите временные emf-файлы ваших компонентов (почитайте первый пост Профессиональные проблемы, решения, рекомендации и ошибки).
4.
Почитайте информацию, как уменьшить размер файла экселя - на просторах интернета этого много .

Если медленно работает код - то это ТОЛЬКО ВАШ косяк. Существует "миллион и один способ" ускорить работу почти любого кода в экселе (в интернете тоже много подобной инфрмации).

. как показывает опыт - количество диалогов и структура объектов(в т.ч. вложения) на форме не влияют на глючность файла.

Добавлено через 1 час 2 минуты
Так же, на будущее - есть мое личное (по опыту), но не претендующее на истину мнение, что лучше всего хранить книги в бинарной форме. IMHO (опять же по моему личному опыту) если падает xml - чаще всего падает конкретно, если падает бинарник - вероятность восстановить его гораздо выше .
Кроме того, все то, что падает в xml из-за объема, зачастую в бинарном и открывается и работает и закрывается стабильнее.

Размышления почему так - предлагаю оставить за скобками.

По моим наблюдениям - если изменилось положение/размер элемента на форме - возникает разрушительный сбой. Если добавил/удалил элемент - то же. Остальное работает норм. Работает уже в промышленных масштабах
В чем причина сбоя именно с элементами на форме может быть?
Форма перегружена кончено, но элементы скомпонованы на отдельные сегменты одной большой задачи. Уменьшить не получается. Вот увеличить - пожалуйста)))) изменилось положение/размер элемента на форме - возникает разрушительный сбой во время работы (выполнения кода) или в дизайнере ?
если во время исполнения кода то как реализованоы изменения положения / размера элемента ?
какие именно элементы вызывают проблемы (имена, родные ли экселя или еще какие подключенные)
те же вопросы про удалил / добавил
предоставьте больше информации сбой возникает не сразу а спустя секунды -минуту. Возникает после действий, связанных с конструированием формы. до запуска дело просто не доходит. причем после восстановления файла - удается что-то сделать с формой. До следующей редакции живу))) Сбой в дизайнере при работе со стандартными элементами управления?
Если да то один из рецептов вам уже писали - пересобрать файл: Экспортируйте все листы, формы, модули и классы.
Создайте новую книгу и ипортируйте в нее все что у вас было. Плюс найти и установить сборку Office с самыми последними обновлениями этим пользуюсь время от времени.
Но вот сейчас к примеру после такой сборки возникла ошибка с библиотеками.
пишет - не может найти библиотеку, которая работает с Chr и переменными. Это в 10 офисе. в 13 офисе - всё работает. Бывало и у меня отваливались библиотеки, поправлял в References вот только библиотеки все пришпилены как в старых файлах.

Напишите код пересборки файла с одного на другой. Такие траблы часто наблюдались в прошлом десятилетии и старых версиях офиса. Сейчас такое редкость. Кроме вас самих с этой проблемой никто вам помочь не сможет.

Из дополнений и наблюдений о причинах могу сказать, что что-то подобное наблюдается в тех файлах, которые работают на грани памяти компа. Попробуйте увеличить оперативку или попросите себе виртуалку с хорошими ресурсами.

Опишите, что вы сделали/делаете для повышения стабильности файла). По пунктам .

P.S. А так же укажите как часто и на каком количестве других/разных компьютеров он открывается другими пользователями (по сети или с локального диска), какое количество изменений и как часто производится, часто ли меняются стили, перестраиваются сводные и т.д. .

Опишите ситуацию целиком. Иначе мы не сможем вам помочь.

по поводу памяти - это актуально

Для пересборки файла просто скопировал в новый файл все листы, в VBA переместил все модули, формы и класс
Потом сохранил в xlsm
потом добавил библиотеку
и всё вроде

Добавлено через 1 минуту
самое интересное, что в 2013 Excel прога работает, а в 2010 - просит подключить библиотеку и ругается на chr и все переменные

в 2013 - работает в течение одного сеанса после манипуляций с библиотеками
далее выкобенивается, пока я снова в библиотеки не залезу

особенно это касается нелицензионного ПО

еще - заработала прога, когда я переподключил (то есть отключил и включил заново) библиотеки

Вы не следуете ранее указанным советам.
1. Попробуйте сохраниться в гораздо более раннем формате офиса - xls. Он не хранит кучи "мусора", как это делают современные форматы.
2. Храните файл ТОЛЬКО в бинарном виде! Это одна из ЯВНЫХ причин всех ваших проблем. По другому - странно что он у вас вообще работает(и даже открывается) при (по всей видимости) таких объемах и будучи эксэмэльным (xlsx(m) = XML в ZIP'е).
3. Лист - это объект(класс) документа не только актуальных данных, но и всей истории и кучи "хлама", которая мешает работать вашему коду при работе с листом. Если вы переносите одну книгу в другую - переносите не объекты (со всем мусором), а внешнее состояние объектов - т.е. содержимое, оформление, названия . Это тоже одна из причин, по которой можно сказать - странно, что вы ожидали после такого, что у вас как-то что-то должно начать работать по другому.
Перерисовывайте листы руками, переносите через буфер обмена отдельной вставкой значений, формата и примечаний (или напишите код, который будет переносить ячейку за ячейкой каждый лист). Объекты ActiveX можно переносить через буфер обмена (как показала практика, проблемы таких объектов при переносе таким способом - не остаются)
4. Имея проблемы с памятью вы должны стараться хранить всю информацию в одной рабочей книге. Пробуйте что-то распределить по другим файлам/книгам. (+ проверьте, что динамическая память у вас не статична, а динамична - это тоже может быть одна из причин ваших проблем)
5. 2010 и 2013 офисы одной локализации?
6. На счет инфы со ссылкой и не лицензионным ПО не понял. Пожалуйста поясните.

Как вы думаете, вы написали в вашем файле вместо слова "мама" слово "папа" или переименовали лист с имени "лист 1" на "супер лист" - и все ваши названия поменялись и в файле ничего лишнего о ваших наименованиях или прежнем тексте не хранится?! Не будьте так уверены. Не верьте своим предположениям и надеждам. Не верьте Экселю, не верьте никогда! Старайтесь думать, что в нем не все гладко и стараться работать чисто самому. Там куча всякой ерунды, которую он таскает в файле с самого его зарождения. Вы можете менять имя объекта 8 раз - и все 8 имен будут продолжать храниться .

Читайте также: