При запуске макроса вылетает excel
Сразу скажу, что правила читал, признаю их и понимаю.
Во время отработки макроса Excel неожиданно закрывает все рабочие книги и затем открывает последнюю автосохраненную версию. Само собой макрос до конца не отрабатывает, и задача не выполняется.
Проблема в том, что отследить место ошибки никак не удается (перед вылетом может отработать треть кода, может половину, или четверть..). Более того, иногда макрос отрабатывает корректно от начала до конца, при абсолютно тех же вводных данных.
Самое загадочное, что при отработке кода действиям (через F8) программа всегда работает корректно.
Не помогает:
1. Запуск на другом компьютере.
2. Сохранение в формате xls (в оригинале xlsm).
===========
Был еще один рабочий макрос. Работал около полугода без ошибок, потом начал так же вылетать на каком моменте. Причем он уже не мог отработать корректно даже по старым данным трехмесячной давности (когда о подобных проблемах не было и речи).
Пришлось переписать всю программку.
===========
Кто-нибудь сталкивался с чем-то подобным? В чем может быть причина?
Заранее спасибо всем, кто решил поучаствовать в расследовании причин этого загадочного явления!
P.S. файл приложить проблематично, так как он содержит много информации, разглашать которую я не имею право. Но все реально, если не удастся разобраться с проблемой по моему описанию - попробую извернуться и выложить оригинал.
Сразу скажу, что правила читал, признаю их и понимаю.
Во время отработки макроса Excel неожиданно закрывает все рабочие книги и затем открывает последнюю автосохраненную версию. Само собой макрос до конца не отрабатывает, и задача не выполняется.
Проблема в том, что отследить место ошибки никак не удается (перед вылетом может отработать треть кода, может половину, или четверть..). Более того, иногда макрос отрабатывает корректно от начала до конца, при абсолютно тех же вводных данных.
Самое загадочное, что при отработке кода действиям (через F8) программа всегда работает корректно.
Не помогает:
1. Запуск на другом компьютере.
2. Сохранение в формате xls (в оригинале xlsm).
===========
Был еще один рабочий макрос. Работал около полугода без ошибок, потом начал так же вылетать на каком моменте. Причем он уже не мог отработать корректно даже по старым данным трехмесячной давности (когда о подобных проблемах не было и речи).
Пришлось переписать всю программку.
===========
Кто-нибудь сталкивался с чем-то подобным? В чем может быть причина?
Заранее спасибо всем, кто решил поучаствовать в расследовании причин этого загадочного явления!
P.S. файл приложить проблематично, так как он содержит много информации, разглашать которую я не имею право. Но все реально, если не удастся разобраться с проблемой по моему описанию - попробую извернуться и выложить оригинал. 0beorn
Во время отработки макроса Excel неожиданно закрывает все рабочие книги и затем открывает последнюю автосохраненную версию. Само собой макрос до конца не отрабатывает, и задача не выполняется.
Проблема в том, что отследить место ошибки никак не удается (перед вылетом может отработать треть кода, может половину, или четверть..). Более того, иногда макрос отрабатывает корректно от начала до конца, при абсолютно тех же вводных данных.
Самое загадочное, что при отработке кода действиям (через F8) программа всегда работает корректно.
Не помогает:
1. Запуск на другом компьютере.
2. Сохранение в формате xls (в оригинале xlsm).
===========
Был еще один рабочий макрос. Работал около полугода без ошибок, потом начал так же вылетать на каком моменте. Причем он уже не мог отработать корректно даже по старым данным трехмесячной давности (когда о подобных проблемах не было и речи).
Пришлось переписать всю программку.
===========
Кто-нибудь сталкивался с чем-то подобным? В чем может быть причина?
Заранее спасибо всем, кто решил поучаствовать в расследовании причин этого загадочного явления!
P.S. файл приложить проблематично, так как он содержит много информации, разглашать которую я не имею право. Но все реально, если не удастся разобраться с проблемой по моему описанию - попробую извернуться и выложить оригинал. Автор - 0beorn
Дата добавления - 16.02.2015 в 15:10
- не хватка оперативной памяти (добавить оперативы; отключить все пересчеты в файле во время выполнения макроса)
- перенапряг процессора во время работы (поменять проц)
- глюки винды (необходима переустановка)
- глюки екселя (необходима переустановка)
- битый файл (попробовать создать новый файл и переместить туда все данные со старого)
В принципе идей больше нет
- не хватка оперативной памяти (добавить оперативы; отключить все пересчеты в файле во время выполнения макроса)
- перенапряг процессора во время работы (поменять проц)
- глюки винды (необходима переустановка)
- глюки екселя (необходима переустановка)
- битый файл (попробовать создать новый файл и переместить туда все данные со старого)
В принципе идей больше нет DJ_Marker_MC
В принципе идей больше нет Автор - DJ_Marker_MC
Дата добавления - 16.02.2015 в 15:19
Был еще один рабочий макрос. Работал около полугода без ошибок, потом начал так же вылетать на каком моменте. Причем он уже не мог отработать корректно даже по старым данным трехмесячной давности (когда о подобных проблемах не было и речи).
Пришлось переписать всю программку.
Тут может быть еще причина изменения структуры каких-то данных. У меня такое было. Например поменялись коды, и их уже нельзя найти в начальных данных, возможно закончился "лимит" строк для сводной таблицы или фильтра - при удалении строк постепенно уменьшается диаппазон.
Например сначала диаппазон сводной был по 100 строку - потом удалили строки - 2-100 - вылетит ошибка.
А вообще без файла - это гадание на кофейной гуще. Вариантов море
Был еще один рабочий макрос. Работал около полугода без ошибок, потом начал так же вылетать на каком моменте. Причем он уже не мог отработать корректно даже по старым данным трехмесячной давности (когда о подобных проблемах не было и речи).
Пришлось переписать всю программку.
Тут может быть еще причина изменения структуры каких-то данных. У меня такое было. Например поменялись коды, и их уже нельзя найти в начальных данных, возможно закончился "лимит" строк для сводной таблицы или фильтра - при удалении строк постепенно уменьшается диаппазон.
Например сначала диаппазон сводной был по 100 строку - потом удалили строки - 2-100 - вылетит ошибка.
А вообще без файла - это гадание на кофейной гуще. Вариантов море SLAVICK
Был еще один рабочий макрос. Работал около полугода без ошибок, потом начал так же вылетать на каком моменте. Причем он уже не мог отработать корректно даже по старым данным трехмесячной давности (когда о подобных проблемах не было и речи).
Пришлось переписать всю программку.
Тут может быть еще причина изменения структуры каких-то данных. У меня такое было. Например поменялись коды, и их уже нельзя найти в начальных данных, возможно закончился "лимит" строк для сводной таблицы или фильтра - при удалении строк постепенно уменьшается диаппазон.
Например сначала диаппазон сводной был по 100 строку - потом удалили строки - 2-100 - вылетит ошибка.
А вообще без файла - это гадание на кофейной гуще. Вариантов море Автор - SLAVICK
Дата добавления - 16.02.2015 в 16:10
SLAVICK, в том то и чудеса данной проблемы, что ничего не поменялось, а файл начал косячить. Поставил работать тот же самый файл что и месяц назад (так уж вышло, что копия файла каждый день сохранялась в отдельное место), с теми же входными данными что и месяц назад, а результат другой.
SLAVICK, в том то и чудеса данной проблемы, что ничего не поменялось, а файл начал косячить. Поставил работать тот же самый файл что и месяц назад (так уж вышло, что копия файла каждый день сохранялась в отдельное место), с теми же входными данными что и месяц назад, а результат другой.
Сигнатура проблемы:
Имя события проблемы: APPCRASH
Имя приложения: EXCEL.EXE
Версия приложения: 12.0.6718.5000
Отметка времени приложения: 54e45be7
Имя модуля с ошибкой: unknown
Версия модуля с ошибкой: 0.0.0.0
Отметка времени модуля с ошибкой: 00000000
Код исключения: c0000005
Смещение исключения: 00000000
Версия ОС: 6.1.7601.2.1.0.256.1
Код языка: 1049
Дополнительные сведения об этой проблеме:
LCID: 1049
Brand: Office12Crash
skulcid: 1049
Пробовал на разных машинах в 2007 и 2010 Excel'е, разницы нет.
Перерыл весь интернет, в том числе и англо-американский кластер. Информации много, полезного нет. Пришёл к выводу: два варианта возникновения проблемы. 1) Корявый код. 2) Повреждён файл.
Помогите плз.
При запуске макроса Excel выдаёт ошибку
Всем привет. Во-первых, сразу предупреждаю, что в VBA это первая моя программа. Хорошо знаю.
Не работает wdActiveEndPageNumber (определение текущего номера страницы) при запуске макроса из Excel
Добрый день. Из екселя считаю количество слов в документе и на какой странице они находятся.
Ошибка при запуске макроса в MS Excel 2007 "Subscript out of range"
Ошибка такая: Subscript out of range Наверняка ошибка в коде: Sub Las() Dim middle(1 To 10) As.
Ошибка при запуске макроса
Помогите найти ошибку. Ошибка возникает в данном участке кода. ActiveWorkbook.Names.Add.
Что вы имеете ввиду? И какой макрос из того десятка с лишним, которые у вас созданы выбивает программу?
Инициализация Userform1, макрос Start.
Если поместить Userform1.Show в Private Sub Workbook_Open() или назначить кнопке, падает Excel. Если перед этим пройтись отладчиком по любой части кода, всё работает на ура.
Добавлено через 2 часа 59 минут
Разобрался кто мне Excel роняет. Два контрола Multipage (Staff и Groups). Вычитал что за Multipage'ами давно грешок есть. Они сами по себе косячные. Буду думать как лечить. Избавляться от них никак нельзя.
Не знаю, как насчет первого действия, но поставил кнопку, назначил ей макрос Start и форма открылась по нажатию. Excel "стоит"
Проект явно нуждается в оптимизации. Десятки одинаковых форм, десятки одинаковых обработчиков (Private Sub TextBox496_KeyPress(. )). Почему Application.Run "ActiveDays" вместо простого вызова ActiveDays?
Почитайте о том, как использовать один обработчик для многих контролов, например тут
Как проверить, в каком из Checkbox пользователь сделал выбор?
Спасибо за ссылку, обязательно изучу материал. Я пока только осваиваю VBA и сам понимаю что получилось громоздко. Но давайте по существу.
Дело в том, что MultiPage'и не могут обработать параметры выдаваемые им во время загрузки формы (могут только после загрузки формы), добавил промежуточную форму, вынес обработку MultiPage'ев в отдельную процедуру, вроде как пашет. но это вот как раз не оптимизация кода, а совсем наоборот. Что скажете?
Добавлено через 3 минуты
. а нет, не пашет
Сигнатура проблемы:
Имя события проблемы: BEX
Имя приложения: EXCEL.EXE
Версия приложения: 14.0.4756.1000
Отметка времени приложения: 4b9c08e8
Имя модуля с ошибкой: unknown
Версия модуля с ошибкой: 0.0.0.0
Отметка времени модуля с ошибкой: 00000000
Смещение исключения: 00000000
Код исключения: c0000005
Данные исключения: 00000008
Версия ОС: 6.1.7601.2.1.0.256.1
Код языка: 1049
Дополнительные сведения об этой проблеме:
LCID: 1049
skulcid: 1049
Добавлено через 16 минут
Вы попробуйте закрыть Excel и выполнить Start из другой книги по кнопке с панели инструментов. Погоняйте стартовую форму, поюзайте контролы, может выдаст ошибку. У меня периодически отрабатывает без ошибок. Да и фиг бы с ней, но на работе постоянно открыто 10-15 книг и один такой крит уведёт все книги с собой не сохранив.
Добавлено через 9 минут
Вот кусок дампа или как его там, я тут вообще не шарю.
shared\OfficeSoftwareProtectionPlatform\OSPPCEXT.DLL". Невозможно найти или открыть PDB-файл.
"EXCEL.EXE" (Win32). Загружено "C:\Windows\SysWOW64\crypt32.dll". Символы загружены.
"EXCEL.EXE" (Win32). Загружено "C:\Windows\SysWOW64\msasn1.dll". Символы загружены.
"EXCEL.EXE" (Win32). Загружено "C:\Windows\SysWOW64\WinSCard.dll". Символы загружены.
"EXCEL.EXE" (Win32). Загружено "C:\Windows\SysWOW64\winhttp.dll". Символы загружены.
"EXCEL.EXE" (Win32). Загружено "C:\Windows\SysWOW64\webio.dll". Символы загружены.
"EXCEL.EXE" (Win32). Загружено "C:\Windows\SysWOW64\winmm.dll". Символы загружены.
"EXCEL.EXE" (Win32). Загружено "C:\Windows\SysWOW64\FM20ENU.DLL". Невозможно найти или открыть PDB-файл.
Поток 0x174c завершился с кодом 0 (0x0).
Необработанное исключение по адресу 0x74A3CB49 в EXCEL.EXE: 0xC0000005: нарушение прав доступа при исполнении по адресу 0x00000000.
Всем добрый день!
Сталкнулся с проблемой. Мне надо, чтобы макрос Excel сам открыл другой файл excel и взял оттуда кое-какие данные. Открываю файл так: Workbooks.Open Filename:="C:\отчет.xls"
Файл открывается, но. после этого выполнение макроса останавливается. Макрос запускается горячими клавишами из Excel. Заметил, что если запускать макрос из окна VBA редактора, то выполнение макроса после открытия файла продолжается.
Может кто сталкивался с такой проблемой?
Пользуюсь Excel 2007
Удаленное выполнение макроса
Привет всем! Подскажите, возможно ли выполнить макрос, который расположен в другой книге? Например.
Пошаговое выполнение макроса
Привет, написал макрос который добавляет в активную ячейку цифру и переходит ниже на ячейку и тоже.
Выполнение макроса по условию
Здравствуйте форумчане! Помогите переделать макрос таким образом, чтобы он срабатывал только при.
Подтверждение выполнение макроса
Здравствуйте, подскажите пожалуйста. Как можно сделать подтверждение на выполнение макроса (вы.
попробовал, не получается
мой макрос находится в личной книге макросов, получается что главного файла у меня как такового нет
Я работаю в 2003 и я не сталкивался с 2007. Процедура открытия и работы с другими файлами нормально работает 2003, а как в 2007 извини незнаю.
правда я не знаю как оно будет работать если открыты две книги с одинаковыми именами. экспериментируй. можно придумать другие способы идентификации. например путь и имя файла.
Делал и это, то есть в начале выполнения программы записывал в память имя книги, которую редактирует макрос, потом этот макрос открывает другой файл и на этом все заканчивается, несмотря на то, что после команды открытия книги идет команда активации редактируемой книги.
Я даже могу сказать больше. У меня ощущение, что в момент окрытия файла макрос вообще останавливается и никакая команда вообще не выполняется. Поэтому и команды на активации других книг просто не обрабатываются.
Вот это у меня тоже не рабоает. Макрос запускается комбинаций клавиш, из личной книги макросов
Sub macros()
Dim BookName As String
BookName = ActiveWorkbook.Name
Workbooks.Open Filename:="C:\otch.xlsx"
Windows(BookName).Activate
End Sub
Не так давно очередной раз столкнулся с ошибками приложения Excel при попытке включения макросов после открытия файлов .xlsm. Вспомнил, что подобные проблемы преследуют пользователей довольно давно, но чаще всего они наблюдались с Excel 2013 и Excel 2016. Характерные особенности этой группы ошибок следующие:
- Приложение Excel закрывается при открытии файла с макросами (при включенном режиме безопасности Включить все макросы );
- Ошибка приложения Excel возникает при попытке включить содержимое (нажатии соответствующей кнопки);
- Ошибка приложения Excel возникает при сохранении файла с макросами;
Ну и по горячим следам очередного инцидента, дабы не откладывать на потом, решил для себя собрать небольшой хаб по ошибкам приложения Excel с последующей модификацией, дабы опять не терять время на поиск информации в Сети и на составление облака причин.
Суть в том, что в процессе открытия файла xlsm, и при отключенных макросах, в верхней части основного окна (над таблицей), высвечивается строка уведомления: ПРЕДУПРЕЖДЕНИЕ СИСТЕМЫ БЕЗОПАСНОСТИ Запуск макросов отключен , с кнопкой включения содержимого (макросов). Как только пользователь её нажимает, Excel попросту аварийно завершается (падает) с ошибкой Программа Microsoft Excel не работает и характерным окном уведомления:
При этом было замечено, что непосредственно перед возникновением ошибки приложения Excel никаких системных обновлений и обновлений пакета Office не устанавливалось. Возможно, каким-то образом задействованы последние обновления на Office, но прямой связи я не заметил, а подробного исследования проблемы не проводил. При этом зависимости от версии операционной системы (мною лично сбои наблюдались на Windows 10 LTSC и Windows 7 Professional) так же выявлено не было. При анализе аварийного дампа приложения ( *.hdmp ) обычно можно увидеть подобную информацию исключения (вывод урезан):
обычно это NTSTATUS с кодом c0000005 - Access violation, доступ запрещен. И чаще всего в дампе можно увидеть такой вот стек потока (вывод оптимизирован для улучшения представления):
000000b9 ` 1acfdd08 000001d3 ` 24c1fe20 : 00000000 ` 00000000 000001d3 ` 2fda9640 : 0x000001d3 ` 2fb24e90
000000b9 ` 1acfdd10 000001d3 ` 6cf35760 : 000001d3 ` 2fda9640 000001d3 ` 045c9b30 : 0x000001d3 ` 24c1fe20
000000b9 ` 1acfdd18 000001d3 ` 5a0e0ef0 : 000001d3 ` 045c9b30 000001d3 ` 2fcbb2b0 : 0x000001d3 ` 6cf35760
000000b9 ` 1acfdd20 00000000 ` 00000000 : 000001d3 ` 2fcbb2b0 000001d3 ` 2fcbb318 : 0x000001d3 ` 5a0e0ef0
из которого единственное что понятно, так это то, что падение Excel происходит в недрах функций библиотеки vbe7.dll (среда исполнения VBA), подгруженной в адресное пространство процесса. Это указывает на проблемы с обработчиком VBA-скриптов, в контексте Excel чаще именуемых макросами.
НЕРЕШЕННОЕ: при отладке приложений из комплекта MS Office, вы не увидите имен функций в стеке вызовов, поскольку отсутствуют отладочные символы как к основным исполняемым файлам (Excel/Word/Outlook), так и к многочисленным библиотекам. Интересно, есть ли какое-либо решение?
Так что же такое VBA и для чего он предназначается?
В приложениях, входящих в комплект MS Office, таких как Excel, Word, PowerPoint и Access, VBA используется для автоматизации множества рутинных задач (напр.: повторяющихся однотипных действий), позволяет создавать формы для общения с пользователем и предлагает множество иного богатого функционала. При помощи VBA доступно управление электронной таблицей посредством объектно-ориентированной модели кода/данных, при помощи VBA-кода входные данные таблиц могут быть обработаны и представлены в итоговых (результирующих) таблицах и диаграммах (графиках). Таблица становится интерфейсом кода, позволяя легко работать, изменять его и управлять расчётами. На выходе VBA проект, используемый в структурах описанных выше приложений (электронные таблицы Excel, презентации PowerPoint, базы Access), компилируется в специальный бинарный исполняемый файл, который размещается внутри файла основного формата. Применительно к Excel это файл vbaProject.bin , который располагается внутри *.xslm-файла в директории /xl , представляющий собой бинарный исполняемый файл проекта, содержащий макрос в откомпилированном (готовом к исполнению) виде.
Наиболее вероятной причиной сбоя является повреждение блока кода VBA, содержащегося в книге Excel. Об истоках этого остается только догадываться, возможно что в структуре .xlsm-файла, в процессе работы с документом, происходят какие-то [непредвиденные разработчиками] изменения, способные приводить блок кода в неработоспособное состояние.
Решение 1: вставка нового листа
Выполните приведенную последовательность действий:
- Открываем [проблемный] .xlsm-файл (файл с макросами).
- Не нажимаем кнопку Включить содержимое .
- Добавляем в книгу Excel новый лист: правая кнопка мыши на ярлыках Лист1/Лист2/Лист3 → Вставить → Лист .
- Сохраняем электронную таблицу. Закрываем Excel.
- Открываем проблемный файл заново и включаем макросы.
Решение 2: перекомпиляция проекта
Выполните последовательность действий:
- Запускаем и открываем новую книгу Excel (не ваш проблемный файл).
- Открываем меню Файл - выбираем Параметры - далее открываем Центр управления безопасностью и заходим в Параметры центра управления безопасностью .
- В разделе Параметры макросов - выставляем чекбокс Отключить все макросы с уведомлением .
- В разделе Надежные расположения - выставляем чекбокс Отключить все надежные расположения .
- В разделе Надежные документы - выставляем чекбокс Отключить надежные документы .
- Жмем везде OK . Закрываем Excel.
- Открываем [проблемный] .xlsm-файл (файл с макросами).
- Не нажимаем кнопку Включить содержимое .
- Открывает редактор Visual Basic при помощи комбинации клавиш Alt + F11 . Либо можно использовать обходной маневр: в настройках включаем меню Разработчик , после этого в появившемся сверху в ленте меню Разработчик выбираем пункт Visual Basic .
- В открывшемся окне редактора Visual Basic (VBA редактор) пересохраняем проект: для этого жмем на панели инструментов кнопку Сохранить (изображение дискетки или комбинация Ctrl + S ).
- Выбираем из меню Debug - выбираем пункт меню Compile VBA Project :
Решение 3: добавление модуля
Дополнительное решение состоит в том, что бы внести изменения в макрос без перекомпиляции.
- Открываем [проблемный] .xlsm-файл (файл с макросами).
- Не нажимаем кнопку Включить содержимое .
- Открывает редактор Visual Basic (при помощи комбинации клавиш Alt + F11 ).
- Открываем меню Tools → пункт Options . В открывшемся окне переходим на вкладку General и деактивируем чекбокс Compile on Demand :
Предположим, Вы скачали файл с данного сайта с примером макроса, открываете файл, но макросы в нем не работают! Как такое может быть? Неужели автор сайта выложил неработающий пример и не знает об этом? И тем более как может случиться такое, что Вы перенесли со своего ПК на другой ПК файл с рабочими макросами на флешке, запускаете, а он не работает. Почему? Вроде все правильно делаете, да ведь и у Вас работает на ПК. И начинает закрадываться мысль: "А чем же этот ПК и Excel на нем такие особенные?" . А ответ может быть прост - перед выполнением макроса не было разрешено выполнение этих самых макросов. Да, в большинстве случаев по умолчанию выполнение макросов в Excel отключено. И их надо включить. Для этого:
- Excel 2003:
Сервис-Безопасность-Уровень макросов "Низкий" - Excel 2007:
Кнопка Офис-Параметры Excel (Excel Options) -Центр управления безопасностью (Trust Centr) -Параметры центра управления безопасностью (Trust Centr Settings) -Параметры макросов (Macro Settings) -Разрешить все макросы (Enable All Macros) - Excel 2010-2016:
Файл (File) -Параметры (Options) -Центр управления безопасностью (Trust Centr) -Параметры центра управления безопасностью (Trust Centr Settings) -Параметры макросов (Macro Settings) -Разрешить все макросы (Enable All Macros)
Если макросы уже включены, но некоторые макросы отказываются работать (как правило те, которые записаны в модулях листов и книг и запускаются при наступлении определенного события - Worksheet_SelectionChange (выделение ячеек), Worksheet_Change (изменение значений ячеек) и т.п.), то скорее всего когда-то вы выполнили какой-нибудь макрос и он отключил отслеживание событий. Тогда надо в любую активную книгу добавить модуль(переходим в редактор VBA( Alt + F11 ) -Insert -Module), вставить в него приведенный ниже код и запустить:
Sub Reset_Events() Application.EnableEvents = True End Sub
чтобы запустить(выполнить) данный макрос макрос необходимо установить курсор в любое место между Sub и End Sub и нажать клавишу F5 .
Читайте также: