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

 

Здравствуйте.
Ранее в одной из тем обсуждал причину появления ложных книг в объектной структуре файла.
Выяснилось, что это должно быть связано с ошибкой «Automation error.Разрушительноый сбой» возникающей при его запуске.
Но причину возникновения самой этой ошибки рекомендовали рассмотреть в отдельной теме.
Поэтому прошу помощи в разборе данной проблемы. В чем её причина?
Суть проблемы такова: книга (см. вложенный файл) была создана в Excel 2016, но пару раз запускалась через Excel 2010 (не лиц.).
При запуске возникало сообщение «Automation error. Разрушительный сбой», открывался файл и редактор VBA.
Если ни чего не сохранять и не менять то и пользоваться файлом было нельзя.
Чтобы можно было пользоваться, выделял весь код в том модуле, который открылся автоматически при запуске, комментировал его и сохранял.
После этого сохранял сам файл. При этом команда СОХРАНИТЬ работала, как СОХРАНИТЬ КАК. Файл соответственно сохранял с заменой существующего.
После этого можно было снова пользоваться полученным файлом на Excel 2010 (не лиц.)
После использования этого файла на Excel 2016 история повторялась.

 

Karataev

Пользователь

Сообщений: 2306
Регистрация: 23.10.2014

Наверное Вам надо создать пустой файл, скопируйте в него все листы из имеющегося файла, и скопируйте модули с макросами. С тем файлом, который Вы выложили на форуме, работать наверное нельзя, т.к. если зайти в VBE, то видно, что несколько модулей книг. Такого по идее не должно быть.
Почему такое произошло, я не знаю. Один и тот же файл можно открывать и в Excel 2016 и 2010 — проблем не должно быть.

 

Вот и хотелось причину выяснить.
А то получится, что вместе с листами и модулями и проблема в новый файл перейдет…
Может имена объектов в объектной модели Excel 2016 и 2010 отличаются или имеет значение наличие лиц. ?

 

Karataev

Пользователь

Сообщений: 2306
Регистрация: 23.10.2014

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

 

sokol92

Пользователь

Сообщений: 4445
Регистрация: 10.09.2017

Уважаемый DmitriyBastr! Профессор (

ZVI

) уже наметил для Вашего файла (и аналогичных)

курс лечения

.  :) От себя хочу добавить: перед копированием листов преобразуйте «умные» таблицы в обычные диапазоны.
Версии Excel (2007-2016) для данного случая значения не имеют. О причинах «порчи» можно только гадать…

 

DmitriyBastr

Пользователь

Сообщений: 82
Регистрация: 04.10.2017

#6

21.02.2018 15:00:35

Этим файлом и не пользуются уже.
Но по его образцу будут создаваться другие, более сложные и ответственные. И проблема может повториться.
Поэтому хотелось бы найти причину. Есть подозрение, что она именно в коде, потому что при запуске файла запускается VBE.

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

Gameower

Дата: Понедельник, 11.07.2016, 06:24 |
Сообщение № 1

Группа: Пользователи

Ранг: Участник

Сообщений: 95


Репутация:

0

±

Замечаний:
0% ±


Excel 2010

Доброго времени суток коллеги.
у меня есть файлик эксель, и при запуске стала появлятся ошибка : Разрушительный сбой.
ПОдскажите как ее устранить?
заранее благодарен за вашу помощь!

 

Ответить

SLAVICK

Дата: Понедельник, 11.07.2016, 10:45 |
Сообщение № 2

Группа: Модераторы

Ранг: Старожил

Сообщений: 2290


Репутация:

766

±

Замечаний:
0% ±


2019

У меня Ваш файл открылся без проблем может с офисом что не так?.
Попробуйте восстановить или на другом компе.
Файл пересохранил в своем офисе — иногда помогает.


Иногда все проще чем кажется с первого взгляда.

 

Ответить

Karataev

Дата: Понедельник, 11.07.2016, 11:32 |
Сообщение № 3

Группа: Проверенные

Ранг: Старожил

Сообщений: 1330


Репутация:

528

±

Замечаний:
0% ±


Excel

Может быть сообщение «Разрушительный сбой» — это сообщение макроса.


Киви-кошелек: 9166309108

Сообщение отредактировал KarataevПонедельник, 11.07.2016, 12:33

 

Ответить

SLAVICK

Дата: Понедельник, 11.07.2016, 11:55 |
Сообщение № 4

Группа: Модераторы

Ранг: Старожил

Сообщений: 2290


Репутация:

766

±

Замечаний:
0% ±


2019

«Разрушительный сбой» — это сообщение макроса.

Не вроде не нашел такого.
но возможно из за:
[vba]

Код

newString = «\ServerDocumentsDANFOSS»

[/vba]
есть доступ к серверу?


Иногда все проще чем кажется с первого взгляда.

 

Ответить

Karataev

Дата: Понедельник, 11.07.2016, 12:28 |
Сообщение № 5

Группа: Проверенные

Ранг: Старожил

Сообщений: 1330


Репутация:

528

±

Замечаний:
0% ±


Excel

SLAVICK, но в любом случае может быть причиной этого сообщения является макрос, а не сам офис.
Да, я тоже смог посмотреть макросы, оказывается был общий доступ для файла, я подумал, что защита использовалась.


Киви-кошелек: 9166309108

Сообщение отредактировал KarataevПонедельник, 11.07.2016, 12:34

 

Ответить

SLAVICK

Дата: Понедельник, 11.07.2016, 12:36 |
Сообщение № 6

Группа: Модераторы

Ранг: Старожил

Сообщений: 2290


Репутация:

766

±

Замечаний:
0% ±


2019

может быть причиной этого сообщения является макрос,

ну дык а это откуда по Вашему? :D

newString = «\ServerDocumentsDANFOSS»

Из макроса ;) .


Иногда все проще чем кажется с первого взгляда.

 

Ответить

Karataev

Дата: Понедельник, 11.07.2016, 12:40 |
Сообщение № 7

Группа: Проверенные

Ранг: Старожил

Сообщений: 1330


Репутация:

528

±

Замечаний:
0% ±


Excel

Gameower, предположительно, у Вас проблема с макросами, а не с самим офисом. Хотя если обновления не устанавливали для офиса, то установите (иногда некоторые ошибки возникают из-за отсутствия обновлений для офиса).
Узнайте, в каком макросе у Вас проблемы и затем уже конкретизируйте вопрос на форуме.


Киви-кошелек: 9166309108

 

Ответить

Gameower

Дата: Понедельник, 11.07.2016, 13:01 |
Сообщение № 8

Группа: Пользователи

Ранг: Участник

Сообщений: 95


Репутация:

0

±

Замечаний:
0% ±


Excel 2010

Karataev, предположительно сбой возникает при обновлении курса евро текущего, при открытии книги в верхней правой ячейке стоит значение после разрушительного сбоя он обновляется и так каждый раз, может в нем проблема? эксель не показывает где в макросе ошибка выпадает

 

Ответить

SLAVICK

Дата: Понедельник, 11.07.2016, 13:25 |
Сообщение № 9

Группа: Модераторы

Ранг: Старожил

Сообщений: 2290


Репутация:

766

±

Замечаний:
0% ±


2019

предположительно сбой возникает при обновлении курса евро текущего,

В том то и дело что предположительно.
А также может из-за:

newString = «\ServerDocumentsDANFOSS»

или:
[vba]

Код

With Sheets(«Тех замены»)

[/vba]
Или еще чего.

Это Ваш файл?
Если да — положите сюда незащищенный проект, если нет — то согласно правил форума :
обсуждать методы взлома программ — запрещено — обращайтесь к автору проекта.


Иногда все проще чем кажется с первого взгляда.

 

Ответить

Karataev

Дата: Понедельник, 11.07.2016, 13:45 |
Сообщение № 10

Группа: Проверенные

Ранг: Старожил

Сообщений: 1330


Репутация:

528

±

Замечаний:
0% ±


Excel

положите сюда незащищенный проект

в файле нет защиты — это просто сделан совместный доступ, при его установке скрывается содержимое vba проекта.

Gameower, можно так поискать проблемный код. Удалите из файла все макросы, а оставьте только модуль «Module1». Не забудьте удалить макросы и в модулях листов.
Затем посмотрите, осталась ли ошибка. Если осталась, то дальше уже нужно смотреть модуль «Module1» и процедуру «Курс_Евро». И выложите на форуме файл, в котором будет только один проблемный модуль.


Киви-кошелек: 9166309108

Сообщение отредактировал KarataevПонедельник, 11.07.2016, 13:48

 

Ответить

SLAVICK

Дата: Понедельник, 11.07.2016, 15:57 |
Сообщение № 11

Группа: Модераторы

Ранг: Старожил

Сообщений: 2290


Репутация:

766

±

Замечаний:
0% ±


2019

это просто сделан совместный доступ,

хм — стормозил.
Посмотрел что проект Unwieveble — и подумал, что защищен как надстройка.
Ну все равно уже написал возможные причины:

newString = «\ServerDocumentsDANFOSS»
или:
With Sheets(«Тех замены»)

Листа Тех замены в файле нет, а макрос — Worksheet_Change листа «Книга запросов DANFOSS» пытается к нему обратится.
да и функция «Курс_Евро» у меня не работает.
Попробуйте так:
[vba]

Код

Function Курс_Евро(Optional ByVal Дата) As Currency   ‘ запрос курса Евро с сайта ЦБ РФ
    ‘—————————————————————————————
    ‘ Procedure : Курс_Евро
    ‘ Author    : Основа — Pavel55, коррекция — Alex_ST: 2010-01-28
    ‘ URL       : http://www.planetaexcel.ru/forum.php?thread_id=6870&page_forum=2&allnum_forum=34
    ‘ Date      : 28.01.2010
    ‘ Purpose   : Запрос курса Евро, установленного ЦБР на заданную дату
    ‘ Notes     : По умолчанию — текущая дата
    ‘—————————————————————————————
    Dim Запрос$, Ответ$, Курс$
    Dim oHttp As Object
    Dim ДЕНЬ$, Месяц$, ГОД$
    Application.Volatile
    If IsMissing(Дата) Then Дата = Date
    If Not IsDate(Дата) Then Дата = CDate(Дата)
    ДЕНЬ = Format(Дата, «dd»): Месяц = Format(Дата, «mm»): ГОД = Format(Дата, «yyyy»)
    Запрос = «http://cbr.ru/currency_base/daily.aspx?C_month=» & Месяц & «&C_year=» _
            & ГОД & «&date_req=» & ДЕНЬ & «%2F» & Месяц & «%2F» & ГОД
    On Error Resume Next
    Set oHttp = CreateObject(«MSXML2.ServerXMLHTTP»)
    If Err.Number <> 0 Then Set oHttp = CreateObject(«MSXML.ServerXMLHTTP»)
    On Error GoTo 0
    If oHttp Is Nothing Then Exit Function
    oHttp.Open «GET», Запрос, False
    oHttp.setTimeouts 1000, 1000, 1000, 1000
    On Error Resume Next
    oHttp.Send
    Ответ = UCase(oHttp.responseText)
    Курс = CCur(Mid(Ответ, InStr(InStr(1, Ответ, «EUR»), Ответ, «</TD></TR>») — 7, 7))
    Set oHttp = Nothing
    Курс_Евро = Курс
End Function

[/vba]


Иногда все проще чем кажется с первого взгляда.

 

Ответить

Gameower

Дата: Вторник, 12.07.2016, 04:50 |
Сообщение № 12

Группа: Пользователи

Ранг: Участник

Сообщений: 95


Репутация:

0

±

Замечаний:
0% ±


Excel 2010

проблема в этом модуле, удалив его все нормализуется, еще загвостка в том что файл используется в локальной сети несколькими пользователями и это осложняет.

 

Ответить

Gameower

Дата: Вторник, 12.07.2016, 12:54 |
Сообщение № 13

Группа: Пользователи

Ранг: Участник

Сообщений: 95


Репутация:

0

±

Замечаний:
0% ±


Excel 2010


ваш вариант при вставке в мой модуль не работает

 

Ответить

SLAVICK

Дата: Вторник, 12.07.2016, 16:34 |
Сообщение № 14

Группа: Модераторы

Ранг: Старожил

Сообщений: 2290


Репутация:

766

±

Замечаний:
0% ±


2019

при вставке в мой модуль не работает

функция не работает?
А в приложенном мной примере считает?


Иногда все проще чем кажется с первого взгляда.

 

Ответить

Gameower

Дата: Четверг, 14.07.2016, 07:15 |
Сообщение № 15

Группа: Пользователи

Ранг: Участник

Сообщений: 95


Репутация:

0

±

Замечаний:
0% ±


Excel 2010

вроде как да и сбоя нет, но в моем файле если я вставляю, то там вообще не работает функция. я бы выложил файл полностью,но форум не позволяет по весу это сделать

 

Ответить

SLAVICK

Дата: Четверг, 14.07.2016, 12:13 |
Сообщение № 16

Группа: Модераторы

Ранг: Старожил

Сообщений: 2290


Репутация:

766

±

Замечаний:
0% ±


2019

вроде как да и сбоя нет, но в моем файле если я вставляю, то там вообще не работает функция.

А Вы старую функцию удалили? Нужно обязательно удалить, иначе программа не понимает с какой функцией ей работать.


Иногда все проще чем кажется с первого взгляда.

 

Ответить

Alex_ST

Дата: Четверг, 14.07.2016, 16:38 |
Сообщение № 17

Группа: Друзья

Ранг: Участник клуба

Сообщений: 3176


Репутация:

604

±

Замечаний:
0% ±


2003

функция «Курс_Евро» у меня не работает

А у меня прекрасно работает
А вот вариант с добавкой[vba]

Код

     oHttp.setTimeouts 1000, 1000, 1000, 1000
    On Error Resume Next

[/vba] перед oHttp.Send — не работает.



С уважением,
Алексей
MS Excel 2003 — the best!!!

Сообщение отредактировал Alex_STПятница, 15.07.2016, 12:52

 

Ответить

SLAVICK

Дата: Четверг, 14.07.2016, 17:00 |
Сообщение № 18

Группа: Модераторы

Ранг: Старожил

Сообщений: 2290


Репутация:

766

±

Замечаний:
0% ±


2019


наверное потому что у меня написано:
[vba]

Код

Set oHttp = CreateObject(«MSXML2.ServerXMLHTTP»)

[/vba]а у Вас:
[vba]

Код

Set oHttp = CreateObject(«MSXML2.XMLHTTP»)

[/vba]
:D .
Не знаю от чего зависит, но у меня Ваш первоначальный вариант функции сейчас не работает(может от офиса — несколько лет назад — работала), поэтому я немного ее поменял — надеюсь Вы не против :)


Иногда все проще чем кажется с первого взгляда.

 

Ответить

Alex_ST

Дата: Пятница, 15.07.2016, 13:03 |
Сообщение № 19

Группа: Друзья

Ранг: Участник клуба

Сообщений: 3176


Репутация:

604

±

Замечаний:
0% ±


2003

Слава, нет проблем. Наоборот — спасибо, что подправил. (давай на «ТЫ» 7)
Но, к сожалению, твоя процедура не идёт на 2003, а моя на том офисе, который у тебя (к стати, какой?)
Жаль, что не получилось «офисонезависимой» процедуры.
Ну, тогда, если твоя точно работает, нужно проосить Сержа подправить старт-топик — добавить версию для Офиса старше, чем…



С уважением,
Алексей
MS Excel 2003 — the best!!!

 

Ответить

SLAVICK

Дата: Понедельник, 18.07.2016, 11:31 |
Сообщение № 20

Группа: Модераторы

Ранг: Старожил

Сообщений: 2290


Репутация:

766

±

Замечаний:
0% ±


2019


Ок beer .

а моя на том офисе, который у тебя (к стати, какой?)

сейчас в 99% использую 2016х64-й офис — на новой работе у всех такой (наконец — то забыл про отчеты в разных версиях :D )
Еще есть 2010х32 — на нем тестирую иногда разные вещи ++ не знаю почему, но иногда файл в 2016-м(и в 2013-м такое было) — тупо перестает открываться. А в 2010-м без проблем.
Потом после пересохранения и в 2016-м открывается без проблем %) .

Проверил:
моя версия работает и в 2010х32 и в 2016х64.
и твоя версия — сейчас работает и там и там(хотя раньше в 2016-м выдавала ошибку… killed ).

нужно просить Сержа подправить старт-топик

Думаю нужно еще протестировать на др. версиях, чтобы уже точно знать где и что работает. Видишь у меня она то работает то нет. Даже не знаю в чем причина — списываю на ЕЩЕ ОДИН глюк 2016х64. :( .


Иногда все проще чем кажется с первого взгляда.

 

Ответить

Ребята. И файлик у меня, благодаря более ранним советам бинарный, и наполнение формы уже практически на 98 % автоматизировано.
А вот перенести содержимое листов из одного файла в другой — практически невозможно. И дело даже не в объеме. Сами листы постоянно меняются.

Я просто научился жить с этой ошибкой. Возникает она строго когда меняется расположение/размер элемента на форме, которая
1. создана в 97 версии Excel
2. испытала по меньшей мере 48 модификаций (я версии считаю)
3. содержит пару сотен разных элементов.
4. испытала неоднократные нагрузки на основные элементы в тысячи и десятки тысяч записей

Я не говорю, что моя форма — великий и непогрешимый продукт моцга.
Она давно уже просится в отдельное приложение. Но пока я дорабатываю мелочи концепции — об отдельном приложении речи не идет.

То что xlsm — большая мусорка, я понимаю. Но сделать с этим пока ничего не могу. В файлах хls возникают проблемки с условным форматированием, некоторыми новыми функциями. От условного форматирования я планомерно ухожу. Но работы пока в этом направлении много. Индикация — важная вещь при экспресс-анализе непрерывно добавляющейся инфы.
А вот как уйти от функций СУММЕСЛИ, СЧЁТЕСЛИ и т.п.? Можно, конечно, наваять свою приблуду, но работать она будет заведомо и ощутимо медленнее. Доживу до SQL — буду выпендриваться.

Так что большинство советов я учитываю и использую. Они помогли мне в моем случае локализовать ошибку, условия ее возникновения, действия к ней приводящие, что мной и освещено здесь.

Добавлено через 2 часа 11 минут

Цитата
Сообщение от StepInLik
Посмотреть сообщение

6. На счет инфы со ссылкой и не лицензионным ПО не понял. Пожалуйста поясните.

Забыл совсем… прошу прощения. Если ПО нелицензионное (офис), то объективно возникает ошибка при подключении модуля, следящего за этим делом. Но у меня ошибка возникает и на лицензионном 2010 офисе (prof+). Так что ко мне это дело не относится. Ссылку здесь я привел, суммируя всё, что я нахожу или к чему прихожу сам по данному вопросу.

Добавлено через 5 минут

Цитата
Сообщение от StepInLik
Посмотреть сообщение

странно что он у вас вообще работает(и даже открывается) при (по всей видимости) таких объемах и будучи эксэмэльным (xlsx(m)

мои собственные проверки. Файл xlsm (2010-2013) работает и открывается при количестве строк 140 тыс. Файл еще работал, но у меня уже не открылся при количестве строки 730 тыс. Проблема была в нехватке оперативки. так что большой вопрос — а открылся ли файл. С таким монстром работать в excel почти невозможно (недопустимый износ нервов). поэтому дальше я не экспериментировал. Понятно, что мои задачи — задачи баз данных. Я сейчас отрабатываю концептуально программу обработки БД. Формировать БД и приложения, работающие с ней буду позже. И скорее всего с профильными спецами. Моя задача будет — грамотно формировать ТО с учетом ньюансов. Кто-б мне такой подарок в жизни сделал?!

Добавлено через 4 минуты

Цитата
Сообщение от StepInLik
Посмотреть сообщение

переносите не объекты (со всем мусором), а внешнее состояние объектов — т.е. содержимое, оформление, названия …

что имелось ввиду? копирование? как перенести форму? перерисовать?
я открываю VBA и драг-энд-дропом перетаскиваю формы, класс, модули из одного файла в другой. листы — копирую стандартным способом «переместить/копировать лист»

Добавлено через 1 минуту

Цитата
Сообщение от anton-sf
Посмотреть сообщение

с контролем создания и уничтожения объектов

я не уничтожаю и не создаю сами объекты на форме. Они созданы на этапе конструирования, позиционированы и отредактированы. Их наполнение — программное.
При редактировании элементов и возникает сбой.

Добавлено через 45 минут

Цитата
Сообщение от AndreA SN
Посмотреть сообщение

При редактировании элементов

имеется ввиду не программное наполнение, а редактирование элементов в конструкторе формы

Есть программа , написанная на VBA и находится на сервере. Несколько человек одновременно работает с этими даннымы.
До сих пор это программа работала без проблема.
Но, сегодня мне понадобилось нескольо изменения делать и для этого и отключила доступ к книге.
После изменение хотела поставить галочку доступ к книге. После этого программа не открывается. Такая ошибка получается: «Automation error. Разрушительный сбой»
Дело в том что это ошибка получается только после галочку доступ к книге.

Что за ошибка? Что можно делать?

Только сейчас заметила что Office 2007 все нормально работает. А Office 2010 и 2013 такая ошибка получается.


может неустановлена библиотека


  • Профессиональные приемы работы в Microsoft Excel

  • Обмен опытом

  • Microsoft Excel

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

в файле нет защиты — это просто сделан совместный доступ, при его установке скрывается содержимое vba проекта.

Gameower, можно так поискать проблемный код. Удалите из файла все макросы, а оставьте только модуль «Module1». Не забудьте удалить макросы и в модулях листов.
Затем посмотрите, осталась ли ошибка. Если осталась, то дальше уже нужно смотреть модуль «Module1» и процедуру «Курс_Евро». И выложите на форуме файл, в котором будет только один проблемный модуль.

в файле нет защиты — это просто сделан совместный доступ, при его установке скрывается содержимое vba проекта.

Gameower, можно так поискать проблемный код. Удалите из файла все макросы, а оставьте только модуль «Module1». Не забудьте удалить макросы и в модулях листов.
Затем посмотрите, осталась ли ошибка. Если осталась, то дальше уже нужно смотреть модуль «Module1» и процедуру «Курс_Евро». И выложите на форуме файл, в котором будет только один проблемный модуль. Karataev

в файле нет защиты — это просто сделан совместный доступ, при его установке скрывается содержимое vba проекта.

Gameower, можно так поискать проблемный код. Удалите из файла все макросы, а оставьте только модуль «Module1». Не забудьте удалить макросы и в модулях листов.
Затем посмотрите, осталась ли ошибка. Если осталась, то дальше уже нужно смотреть модуль «Module1» и процедуру «Курс_Евро». И выложите на форуме файл, в котором будет только один проблемный модуль. Автор — Karataev
Дата добавления — 11.07.2016 в 13:45

Источник

VBA Automation Error

In this Article

This tutorial will explain what a VBA Automation Error means and how it occurs.

Excel is made up of objects – the Workbook object, Worksheet object, Range object and Cell object to name but a few. Each object has multiple properties and methods whose behavior can be controlled with VBA code. If the VBA code is not correctly programmed, then an automation error can occur. It is one of the more frustrating errors in VBA as it can often pop up for no apparent reason when your code looks perfectly fine!

(See our Error Handling Guide for more information about VBA Errors)

Referring to a Variable no Longer Active

An Automation Error could occur when you are referring to a workbook or worksheet via a variable, but the variable is no longer active.

When we run the code above, we will get an automation error. This is due to the fact that we have opened a workbook and assigned a variable to that workbook. We have then closed the workbook but in the next line of code we try to activate the closed workbook. This will cause the error as the variable is no longer active.

If we want to activate a workbook, we first need to have the workbook open!

Memory Overload

This error can also sometimes occur if you have a loop and you forget to clear an object during the course of the loop. However, it might only occur sometimes, and not others- which is one of the reasons why this error is can be so annoying.

Take for example this code below:

The variable is declared as an Object, and then the SET keyword is used to assign an image to the object. The object is then populated with an image and inserted into the Excel sheet with some formatting taking place at the same time. We then add a loop to the code to insert 100 images into the Excel sheet. Occasionally this causes an automation error, but sometimes it doesn’t – frustrating, right?

The solution to this problem is to clear the object variable within the loop by setting the object to NOTHING – this will free the memory and prevent the error.

DLL Errors and Updating Windows

Sometimes the error occurs and there is nothing that can be done within VBA code. Re-registering DLL’s that are being used, making sure that our Windows is up to date and as a last resort, running a Registry Check as sometimes the only things that may work to clear this error.

A good way of avoiding this error is to make sure that error traps are in place using the On Error Go To or On Error Resume Next routines.

VBA Coding Made Easy

Stop searching for VBA code online. Learn more about AutoMacro — A VBA Code Builder that allows beginners to code procedures from scratch with minimal coding knowledge and with many time-saving features for all users!

VBA Code Examples Add-in

Easily access all of the code examples found on our site.

Simply navigate to the menu, click, and the code will be inserted directly into your module. .xlam add-in.

Источник

Excel vba automation error разрушительный сбой

This forum has migrated to Microsoft Q&A. Visit Microsoft Q&A to post new questions.

Asked by:

Question

I have worked on a file for long time using Excel 2003. I have few macros and custom functions written. I decided to use another computer to do some additional work on this file — mainly new formulas and outline, but no code writing. The file was opened as 2003 and was saved in the same fashion, was not converted to 2007 at any point.

I saved it and closed it. I then opened it on my original computer and after opening it gave me «Automation Error — Catastrophic Failure» message without an error number. Right after that it sent me to VBA screen and instead of having my file name under the Project Tree, it has «VBAproject». I click on it and can see my code and my forms, but the worksheets are not label properly plus they have this little blue icon next to them.

I tried to open the file again by clicking Disable macros, and no error was given but obviously can’t do much with the file.

One thing I read around is about sharing and references. This file sharing options were turned off so that’s not it. I then realized under VBA-Tools-References that the office 2007 is referencing different files for some of the selections, like Visual Basic For Applications, Microsoft Excel 12.0 Object Library, etc. I copied those files to the proper folders on the 2003 computer but that didn’t do the trick. When I click disable macros and go to check the references in the 2003 version everything looks normal.

Any ideas? I did quite of work on this file so redoing this is the last resort but I hope I don’t have to go that route.

Thank you in advance!

All replies

Automation errors usually occur when a workbook is trying to run some macro that contains objects they are not included in the references section of the VBA editor. One example that would produce this is having some controls on a form which require a specific DLL to be correctly registered on a client PC. If these DLLs are on your pc, the workbook is fine. Put this same workbook on another PC without the DLLs, and an automation error will occur.

Hope this helps.

Thank you Jennifer,

So tell me what is the best way to check what dll is crashing? Should I simply check which files are referenced in the VBA-Tools-References and see of those files are on the other computer?

Whilst it might be a reference issue what you describe seems much more serious than the usual problems associated with a missing or incompatible reference.

It’s not clear from your original description which Excel version you are currently using, though I assume 2007 as you mentioned «12.0» in the references. FWIW those references are normal, indeed all project will include the following as default

Visual Basic For Applications
Microsoft Excel x.0 Object Library
OLE Automation
Microsoft Office x.0 Object Library
and possibly if a form has ever been added —
Microsoft Forms 2.0 Object Library

where x refers to the Excel version.

Can you open the file in Safe mode, from the Run command
«excel.exe /safe» without quotes
(you might then need to change security settings via the UI to open a file with VBA)

Can you open the file in Excel 2003

Is there anything you can think of in the file that’s not typical about the xls/a(?) originally saved in 2003.

Regards,
Peter Thornton

Hello Peter and thank you for the response.

I am opening the file with Excel 2003 (on Windows XP if it matters). I have worked on this file for long time and just recently did some cosmetic work on Excel 2007 on another computer. I did some VBA coding at that point but it was minor and primarily for formatting help.

The issue is that now I open the file in 2003 and gives me the error. What is even more absurd, I re-worked an old file (which was never opened on 2007) and that file still gives the same error on few of my company’s computers that are all running on 2003.

The current references look like this:

Visual Basic For Applications
Microsoft Excel 11.0 Object Library
OLE Automation
Microsoft Office 11.0 Object Library
Microsoft Forms 2.0 Object Library

I was able to uncheck the 3rd and 4th of these but still the file gives an error. When I open the file on 2007 the 11.0 becomes 12.0 and no other changes.

I can’t think of any special references since all my work has been done on 2003 with few minor changes in 2007. This error drives me crazy since I can’t do anything with the file. I will try this safe mode opening. I have never opened a file through VBA but will try.

When you round trip a VBA file saved on an old version to a new, and back again reference problems can be introduced, even if you haven’t done anything apart from save.

That occurs when the reference has been updated to the new version then not found in the old version’s system. Whilst that can make some VBA stuff fail, normally not with the serious consequences you described. However the ref’s you show this time look fine for the file when opened in 2003, indeed exactly what I’d expect. Actually I’m surprised you were able to remove two of the ref’s.

The cosmetic changes you made in 2007 sound like formats, some of these may cause problems when reopened in 2003, though normally the compatibility checker will pick these up.

I’m a bit confused though, if I follow you are saying you’ve got problems with a file that’s never even been opened in 2007. Also if I follow the exact same file opens fine in some 2003 systems but not in others. Does the file include any non standard forms controls, any controls that you would have needed to add to the toolbox for example.

Regards,
Peter Thornton

Sorry to confuse you here — I am talking about 2 files.

First file — was used in 2003, then saved and more formatting work was done on 2007, after that this file crashed on my personal computer and one my coworker’s as well. We can says this «round-trip» is the cause.

The second file is technically a copy of the first before it was opened on 2007. I re-did all of the work that I previously did on 2007 on my 2003 excel and that file is works fine on my computer but is crashing on some of my coworkers computers. This file was never opened on 2007.

Got me thinking though — I have loaded some custom toolbars on my excel that I am not sure all people within my company have. I don’t know if I am going in the wrong direction here. Still I got a file now that I can open along with 2-3 other co-workers, but majority of the people can’t and this file was not opened on 2007 but the error (at least the message) is exactly the same as the error I myself was getting when doing this 2003-2007 round trip.

Curiouser and curiouser!

Do you have an original copy of the file that you neither modified in 2007 nor 2003, if so does that work on all machines.

Are there any Links ?

Any non standard controls that would have needed to be added to the Toolbox ?

Can you open the problematic files on the problematic machines in Safe Mode (see my first post) ?

Any references marked MISSING ?

Any Open event code, if so hold Shift when opening.

Custom Toolbars, do you mean «attached» to the workbook or created on demand. FWIW I really think best never to «attach» custom toolbars, instead create the custom toolbar in the workbook’s open event and delete in the close. That said I can’t think of any reason for a custom toolbar to cause the problems you described.

Regards,
Peter Thornton

Glad I got your curiosity! 🙂

The file I worked on from scratch over a year now. It was always done on 2003.

If you mean links to outside sources — no. There are hyperlinks within the file itself, but nothing fancy on that end.

I don’t think any non-standard controls are added to the Toolbox.

I can open even the file that crashes on my computer by selecting Disable Macros. I tried the safe mode as well with the file that always crashes and besides the message that the macros are disabled in the beginning everything else is fine. So I assume all my coworkers would be able to open it with Safe mode as well.

No MISSING references. Unless it is hiding somewhere else, but I would assume the error message would let me know that.

No Open event code — that includes all of the tabs as well and no change event code.

The custom toolbars are widely used by my company and never caused many errors. But you are right, I don’t think that is the error.

I would gladly send you the file, but it is full with company information. What is even more annoying is that I work in a different location from the rest of my coworkers that have issues with this file so I can’t see what is going on there.

Before I did the changes with 2007, a month ago I had this issue — after my regular update on the file, the other person tried to open the file but got the same error. This was the first time when we faced that error. While waiting for him to hear from IT, I did some more updates to the file (didn’t remove anything old and didn’t add any code) and sent him the most recent copy. Suddenly it worked for him. Bizarre! 2 weeks later I did the updates on 2007 and I got the same error myself. For a year working with this file neither of us had any problems. It just recently started. I think it must be something not necessary related to this file, but rather with my excel, which was activated by another file and this file doesn’t like it. Is that too crazy of an idea?

Источник

Adblock
detector

   dragonIMV

16.05.19 — 09:46

Добрый день.

Стоит 1С 8.2 УПП.

Платформа 8.3.12.1790

Стоит Excel 2010.

У нескольких пользователей началась ерунда с работой Экселя.

Есть обработка, которая открывает файл экселя и оттуда данные закидывает в заказ поставщику.

В обработке в начале идет «Новый COMОбъект(«Excel.Application»)».

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

-2147418113(0x8000FFFF): Разрушительный сбой

Соответственно это на любом файле экселя вылетает, от самого файла не зависит, так как ещё и не дошло действие до него.

Вопрос, может кто сталкивался с таким и подскажет куда копать?

P.S. под этим же пользователем с другого терминала все нормально работает, т.е. проблема где то возникает на конкретном терминале.

   shadow_sw

1 — 16.05.19 — 09:50

   Про100Филя

2 — 16.05.19 — 09:53

(0) Какая разрядность 1С и excel?

   dragonIMV

3 — 16.05.19 — 09:55

(1) там про работу самого экселя. А у меня и на пустом файле новом такая ошибка выходит. Да даже просто обработку если сделать с кодом

Excel = Новый COMОбъект(«Excel.Application»);

Без выбора файла, то уже ошибка будет. Просто на обработке из одной строчки этой. Так что никак от файла самого не зависит это к сожалению.

   dragonIMV

4 — 16.05.19 — 09:56

(1) уточню, что через сам Эксель на терминале файл спокойно открывается и делается что угодно с ним.

   dragonIMV

5 — 16.05.19 — 09:57

(2) Хм. 64 у 1С и 32 у Экселя.

   shadow_sw

6 — 16.05.19 — 10:04

(3) да ты ж работаешь через объект Excel, ошибки теже

   dragonIMV

7 — 16.05.19 — 10:07

(6) но лично в Экселе же нет ошибок никаких. Спокойно файлы открываются, работаешь с ними, закрываешь. Ошибок нет.

Ошибка лишь в 1С в момент вот попытки создания комобъекта с экселем.

   shadow_sw

8 — 16.05.19 — 10:10

(7) тогда начинай сначала — кэш чистил?

   dragonIMV

9 — 16.05.19 — 10:11

(8) да

   shadow_sw

10 — 16.05.19 — 10:12

(9) пересохранить файл под другим именем?

   dragonIMV

11 — 16.05.19 — 10:15

(10) Да. Так же как и копирование вручную ячейки и т.д.. Но как я выше написал, ошибка выходи без файла.

Просто когда 1 строчка в обработке: Excel = Новый COMОбъект(«Excel.Application»);

Т.е. от файла никак не зависит. Это может быть и пустой файл и что угодно.

   DrZombi

12 — 16.05.19 — 10:17

(0) Такая ошибка была, когда на ПК была установлен Клиент 1С х64.

   shadow_sw

13 — 16.05.19 — 10:18

(11) а если файл сохранить в старом формате? 97-2003

   Про100Филя

14 — 16.05.19 — 10:21

(5) По идеи должно работать. Но ошибка точно в разрядности.

(12) Попробуй поставить 64х эксель или 32х битную платформу.

   dragonIMV

15 — 16.05.19 — 10:21

(13) А он в старом формате и есть. Но пробовал и новые форматы тоже.

(12) т.е. разрядность экселя тоже надо 64 сделать или что имеете ввиду?

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

Это всё вот не понятно.

   shadow_sw

16 — 16.05.19 — 10:22

а файл не занят чем то еще? или эксель открыт еще один?

   dragonIMV

17 — 16.05.19 — 10:24

(16) нет, не занят, проверил. Эксель…хм…если только завис как либо хитро, а так всё закрыто смотрю.

   shadow_sw

18 — 16.05.19 — 10:26

(17) RDP? завершить полностью сеанс пользователя

   stix2010

19 — 16.05.19 — 10:29

(0) неужели для чтения люди до сих пор COM пользуются?

   dragonIMV

20 — 16.05.19 — 10:34

(18) на всякий случай сейчас сам под ней полностью вышел из терминала и зашел заново, не помогло.

До этого да, оказывается крестиком тупо закрывали.

Ну да все равно ошибка есть.

(19) а через что предлагаешь сделать? Я по привычки с давних времен так делаю)))

   dragonIMV

21 — 16.05.19 — 10:38

(14) совет по 64 Экселю передал им конечно. Но пока согласуют, пока поставят. Это день другой уйдет, от меня это никак не зависит.

Так что этот момент буду иметь ввиду, но пока искать и другие пути решения.

   stix2010

22 — 16.05.19 — 10:40

(19) это несколько странно сейчас на платформе 8.3.12, если книга exel из 1 листа, то ТабличныйДокумент.Прочитать(ФайлЭкселя), далее работать как с табличным документом.

   stix2010

23 — 16.05.19 — 10:41

(22) -> (20)

   dragonIMV

24 — 16.05.19 — 10:43

(22) За идею спасибо, после обеда код перепишу и проверю, будет ли работать под проблемным пользователем.

   Кодер

25 — 16.05.19 — 11:15

Заверни в попытку, получи ОписаниеОшибки.

   dragonIMV

26 — 16.05.19 — 11:20

(25) изначально так и было, описание было пустым.

А без Попытки выходит вот что, что в начале написал.

   DrZombi

27 — 16.05.19 — 11:32

(15) Не страдай и ставь х32 на Клиентские ПК :)

  

dragonIMV

28 — 16.05.19 — 12:06

(22) Данный метод сработал без ошибки. Так что спасибо за совет, остановлюсь на этом решении.

Return to VBA Code Examples

This tutorial will explain what a VBA Automation Error means and how it occurs.

Excel is made up of objects – the Workbook object, Worksheet object, Range object and Cell object to name but a few. Each object has multiple properties and methods whose behavior can be controlled with VBA code. If the VBA code is not correctly programmed, then an automation error can occur. It is one of the more frustrating errors in VBA as it can often pop up for no apparent reason when your code looks perfectly fine!

(See our Error Handling Guide for more information about VBA Errors)

Referring to a Variable no Longer Active

An Automation Error could occur when you are referring to a workbook or worksheet via a variable, but the variable is no longer active.

Sub TestAutomation()
  Dim strFile As String
  Dim wb As Workbook
'open file and set workbook variable
  strFile = Application.GetOpenFilename
  Set wb = Workbooks.Open(strFile)
'Close the workbook
  wb.Close
'try to activate the workbook
  wb.Activate
End Sub

When we run the code above, we will get an automation error.  This is due to the fact that we have opened a workbook and assigned a variable to that workbook. We have then closed the workbook but in the next line of code we try to activate the closed workbook.  This will cause the error as the variable is no longer active.

VBA AutomationError

If we want to activate a workbook, we first need to have the workbook open!

Memory Overload

This error can also sometimes occur if you have a loop and you forget to clear an object during the course of the loop. However, it might only occur sometimes, and not others-  which is one of the reasons why this error is can be so annoying.

Take for example this code below:

Sub InsertPicture()
  Dim i As Integer
  Dim shp As Object
  For i = 1 To 100
    With Worksheets("Sheet1")
'set the object variable
       Set shp = .OLEObjects.Add(ClassType:="Forms.Image.1", Link:=False, DisplayAsIcon:=False, Left:=.Cells(i, "A").Left, Top:=.Cells(i, "A").Top, Width:=264, Height:=124)
    End With
    With shp
     .Object.PictureSizeMode = 3
'load the picture
     .Object.Picture = LoadPicture("C:dataimage" & i & ".jpg")
     .Object.BorderStyle = 0
     .Object.BackStyle = 0
    End With
  Next i
End Sub

The variable is declared as an Object, and then the SET keyword is used to assign an image to the object. The object is then populated with an image and inserted into the Excel sheet with some formatting taking place at the same time.  We then add a loop to the code to insert 100 images into the Excel sheet. Occasionally this causes an automation error, but sometimes it doesn’t – frustrating, right?

The solution to this problem is to clear the object variable within the loop by setting the object to NOTHING – this will free the memory and prevent the error.

 Sub InsertPicture()
  Dim i As Integer
  Dim shp As Object
  For i = 1 To 100
    With Worksheets("Sheet1")
'set the object variable
     Set shp = .OLEObjects.Add(ClassType:="Forms.Image.1", Link:=False, DisplayAsIcon:=False, Left:=.Cells(i, "A").Left, Top:=.Cells(i, "A").Top, Width:=264, Height:=124)
    End With
    With shp
     .Object.PictureSizeMode = 3
'load the picture
     .Object.Picture = LoadPicture("C:dataimage.jpg")
     .Object.BorderStyle = 0
     .Object.BackStyle = 0
    End With
'clear the object variable
    Set shp = Nothing
  Next i
End Sub

DLL Errors and Updating Windows

Sometimes the error occurs and there is nothing that can be done within VBA code.  Re-registering DLL’s that are being used, making sure that our Windows is up to date and as a last resort, running a Registry Check as sometimes the only things that may work to clear this error.

A good way of avoiding this error is to make sure that error traps are in place using the On Error Go To or On Error Resume Next routines.

VBA Coding Made Easy

Stop searching for VBA code online. Learn more about AutoMacro — A VBA Code Builder that allows beginners to code procedures from scratch with minimal coding knowledge and with many time-saving features for all users!
vba save as

Learn More!

Понравилась статья? Поделить с друзьями:
  • Vba excel разработка макросов
  • Vba excel разницу во времени
  • Vba excel размеры ячейки
  • Vba excel свойства формы
  • Vba excel размеры массива