Приложение Excel VBA автоматически останавливается с сообщением "Выполнение кода приостановлено"

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

У нас есть несколько приложений Excel VBA, которые отлично работают на нескольких машинах пользователей. Однако на одной машине они останавливаются на определенных строках кода. Это всегда одни и те же линии, но эти линии, похоже, не имеют ничего общего друг с другом.

Если вы нажмете F5 (запустите) после остановки, приложение продолжит, так что оно почти похоже на точку останова. Мы попытались выбрать "удалить все перерывы" из меню и даже добавить разрыв и удалить его снова.

У нас была эта проблема с отдельными приложениями раньше, и мы "обманывали" ее, вырезая код из модулей, компилируя, а затем вставляя его обратно и т.д.

Теперь проблема связана скорее с самим Excel, чем с одним .xls, поэтому мы немного не уверены, как это можно сделать.

Любая помощь будет с благодарностью получена:)

Спасибо,

Филип Уиттингтон

Ответ 1

Я нашел второе решение.

  • Нажмите кнопку "Отладка" во всплывающем окне.
  • Дважды нажмите Ctrl + Pause|Break.
  • Нажмите кнопку воспроизведения, чтобы продолжить.
  • Сохраните файл после завершения.

Надеюсь, это поможет кому-то.

Ответ 2

Эта проблема возникает из-за странной причуды в Office/Windows.

После разработки одного и того же кода VBA и запуска его сотни раз (буквально) за последние пару дней я столкнулся с этой проблемой только сейчас. Единственное, что было по-другому, это то, что перед тем, как я столкнулся с этой запутанной проблемой, я случайно закончил выполнение кода VBA с помощью неортодоксального метода.

Я очистил все временные файлы, перезагрузил и т.д. Когда я снова запустил код после этого, у меня все еще возникла проблема - до того, как я вошел в первый цикл. Имеет смысл, что "нажмите кнопку" Отладка "во всплывающем окне, затем дважды нажмите [Ctrl + Break], и после этого можно продолжить без остановок", потому что что-то в комбинации Office/Windows не выпустило выполнение. Он застрял.

Резервное действие Ctrl + Break, вероятно, устраняет затяжное выполнение.

Ответ 3

Одно из решений здесь:

Решение этой проблемы состоит в том, чтобы добавить строку кода "Application.EnableCancelKey = xlDisabled" в первой строке вашего макрос.. Это устранит проблему, и вы сможете выполнить макрос успешно не получив сообщение об ошибке "Исполнение кода было прервано".

Но после того, как я вставил эту строку кода, я больше не смог использовать Ctrl + Break. Так оно работает, но не сильно.

Ответ 4

Я обнаружил, что ударил ctrl + break, пока макрос не запускал исправленную проблему.

Ответ 5

Я бы попробовал обычные исправляющие вещи: - Запустите Rob Bovey VBA Code Cleaner в коде VBA - удалить все добавочные файлы на ПК пользователей, в частности, COM и .NET addins - Удалите все файлы .EXD пользователей (несовместимость MSoft Update) - Запустить обнаружение и восстановление Excel в системе пользователей - проверьте размер файла .xlb пользователя (должно быть 20-30K) - Перезагрузите, затем удалите все файлы Temp пользователей

Ответ 6

Спасибо всем за их вклад. Эта проблема была решена путем выбора REPAIR в панели управления. Я предполагаю, что это явно перерегистрирует некоторые из встроенных COM-компонентов Office и делает то, что REINSTALL не делает. Я ожидаю, что последний просто проверит контрольный список и иногда согласен с тем, что там, если он уже установлен, может быть. Затем у меня была отдельная проблема с регистрацией моей собственной DLL-библиотеки .NET для COM-взаимодействия на компьютере пользователя (несмотря на то, что это также работало на других машинах), хотя я думаю, что это была моя ошибка, а не Microsoft. Еще раз спасибо, я очень ценю это.

Ответ 7

Я несколько раз сталкивался с этой проблемой при разработке одного сложного приложения Excel VBA. Иногда Excel начал беспорядочно разрывать объект VBA. И единственным средством было перезагрузить машину. После перезагрузки Excel обычно начал нормально работать.

Вскоре я выяснил, что возможное решение этой проблемы - нажать CTRL + Break один раз, когда макрос не запущен. Возможно, это тоже поможет вам.

Ответ 8

У меня также возникла проблема с использованием excel 2007 с рабочей книгой foobar.xlsm(с поддержкой макроса), которая заставила бы "Исполнение кода было прервано", просто попытавшись закрыть книгу на красном X в правом углу без макросы, выполняемые вообще, или любые макросы "инициализации", рабочей книги или рабочей таблицы. Параметры, которые я получил, были "Конец" или "Продолжить", Debug всегда был серым. В качестве предыдущего плаката я предложил Панель управления → Программы и функции → щелкнуть правой кнопкой мыши "Microsoft Office Proffesional 2007" (в моем случае) → изменить- > ремонт.

Это разрешило проблему для меня. Я бы добавил, что это произошло вскоре после обновления MS, и я также нашел добавление в Excel под названием "Team Foundation" от Microsoft, которое я, конечно же, не установил добровольно

Ответ 9

Я хотел бы добавить больше деталей к ответу Стэна # 2 по следующим причинам:

  • Я сталкивался с этой проблемой сам более десятка раз и, в зависимости от условий проекта, выбирал между магическим ответом stan voodoo №1 или №2. Когда я продолжаю сталкиваться с этим снова, я становлюсь более любопытным, чем это происходит в первую очередь.

  • Я хотел бы добавить ответ для пользователей Mac тоже.

  • Есть ограничения с обоими этими возможными ответами:

    • если код защищен (и вы не знаете пароль), тогда ответ № 1 не поможет.
    • если код не защищен, то ответ № 2 не позволит вам отладить код.

  1. Это может произойти по любой из следующих причин:

    • Операционная система не выделяет системные ресурсы процессу Excel. (Решение: нужно просто запустить операционную систему - вероятность успеха очень низкая, но уже много раз работала)

    • P-код - это промежуточный код, который использовался в Visual Basic (до .NET) и, следовательно, он все еще используется в VBA. Это позволило более компактный исполняемый файл за счет более медленного выполнения. Почему я говорю о p-коде? Потому что иногда он поврежден между несколькими запусками и большими файлами или просто из-за установки программного обеспечения (Excel) где-то испортилось. Когда p-код искажает. выполнение кода продолжает прерываться. Решение. В этих случаях предполагается, что ваш код начал повреждаться, и в будущем есть вероятность, что ваша книга Excel также будет повреждена, и вы получите сообщения типа "Файл Excel поврежден и не может быть открыт". Следовательно, как быстрое решение, вы можете положиться на ответ № 1 или ответ № 2 в соответствии с вашими требованиями. Тем не менее, никогда не игнорируйте признаки коррупции. Лучше скопировать ваши модули кода в блокнот, удалить модули, сохранить и закрыть книгу, закрыть Excel. Теперь снова откройте рабочую книгу и начните создавать новые модули с кодом, ранее скопированным в блокнот.

  2. Пользователи Mac, попробуйте любой из приведенных ниже вариантов, и они определенно будут работать в зависимости от архитектуры вашей системы, то есть ОС и версии Office.

    • Ctrl + Pause
    • Ctrl + ScrLk
    • Esc + Esc (нажмите дважды последовательно)

Вы будете переведены в режим прерывания с использованием вышеуказанных комбинаций клавиш, так как макрос приостанавливает выполнение, немедленно завершая текущую задачу. Это замена шага 2.

  1. Решение: Чтобы преодолеть ограничение на использование ответа № 1 и ответа № 2, я использую xlErrorHandler вместе с оператором Resume в обработчике ошибок, если код ошибки равен 18. Затем прерывание отправляется в выполняющуюся процедуру как ошибка, которую можно отследить с помощью обработчик ошибок, настроенный с помощью оператора On Error GoTo. Trappable код ошибки - 18. Текущая процедура прервана, и пользователь может отладить или завершить процедуру. Microsoft предупреждает, что не используйте это, если ваш обработчик ошибок имеет оператор возобновления, иначе ваш обработчик ошибок всегда возвращается к одному и тому же утверждению. Это именно то, что мы хотим в нежелательных бессмысленных прерываниях выполнения кода.

Ответ 10

У меня были эти проблемы десятки раз, и, как и вы, я искал в Интернете только для того, чтобы найти недостаток хороших ответов в том, как решить проблему. Я считаю, что точное сообщение, которое я получаю, это "Исполнение кода было прервано".

Я получаю эту ошибку только в том случае, когда я вручную нарушаю выполнение кода в Excel (обычно, нажимая Ctrl + Break). Как только это произойдет, мне обычно приходится перезагружать компьютер, чтобы он снова стал нормальным.

Ответ 11

Моя текущая репутация пока не позволяет публиковать это как комментарий. Решение Stans для входа в режим отладки, нажмите дважды Ctrl + Break, включите, сохраните решение моей проблемы, но у меня есть два неожиданных завихрения:

  • Мой проект struture защищен паролем, поэтому, чтобы войти в режим отладки, мне пришлось сначала войти в режим разработчика, щелкнуть по структуре проекта и ввести пароль.

  • Мой проект представляет собой файл шаблона (.xmtl). Я открыл файл с помощью двойного щелчка, который открывает его как .xml с "1" в конце предыдущего имени файла. Я исправил ошибку как по инструкции Stans и сохранил ее как... 1.xml файл. Когда я снова открыл шаблон, на этот раз в качестве шаблона и захотел применить ту же ошибку к этому файлу, ошибка исчезла! Я не изменил этот файл и все еще не ошибся при выполнении макроса. Это означает, что ошибка на самом деле не в файле, а в (скрытом) параметре в Excel.

Ответ 12

Теперь проблема связана с самим Excel.

Переустановите и исправьте его:) Другое, что трудно сказать.