После закрытия эксель макрос не работает
В данной статье хочу описать вкратце способ, как можно запустить какой-то файл Excel с разрешенными макросами. Зачем это надо: бывают ситуации, когда Вы высылаете файл с макросами и хотите, чтобы его открывали только с разрешенными макросами, т.к. без них он бесполезен (как правило через макросы выполняются некие операции при работе с файлом). В принципе есть способы заставить пользователя работать с файлом только при включенных макросах. Самый простой (способ 1) - это заставить его именно разрешить их выполнение, прежде чем начать работу с файлом.
Вариант 1:
Самый простой и легко исполняемый способ. Создаете в нужной книге новый лист. Называете его "WARNING". На листе мы пишем инструкцию по действиям пользователя для включения макросов. Что-то типа:
Для работы с файлом требуется разрешить макросы!
Excel 2003: Сервис- Безопасность- Уровень макросов «Низкий»
Excel 2007: Меню- Параметры Excel- Центр управления безопасностью- Параметры центра управления безопасностью- Параметры макросов- Разрешить все макросы;
Excel 2010: Файл- Параметры- Центр управления безопасностью- Параметры центра управления безопасностью- Параметры макросов- Разрешить все макросы.
И скрываем все листы в книге, кроме листа "WARNING". Теперь в остается дело за малым: в модуль книги вставляете следующий код:
'Данная процедура скрывает перед закрытием книги все листы, 'кроме листа "WARNING" Private Sub Workbook_BeforeClose(Cancel As Boolean) Application.ScreenUpdating = False Dim wsSh As Worksheet Sheets("WARNING").Visible = -1 For Each wsSh In ThisWorkbook.Sheets If wsSh.Name <> "WARNING" Then wsSh.Visible = 2 Next wsSh ThisWorkbook.Save End Sub 'Данная процедура показывает перед открытием книги все листы, 'кроме листа "WARNING" Private Sub Workbook_Open() Dim wsSh As Worksheet For Each wsSh In ThisWorkbook.Sheets wsSh.Visible = -1 Next wsSh ThisWorkbook.Sheets("WARNING").Visible = 2 End Sub
Из кода видно, что если макросы будут отключены, то код Workbook_Open не будет выполнен. Следовательно пользователь увидит только лист "WARNING", на котором у нас написаны инструкции по включению макросов, которые ему в любом случае придется выполнить, если есть желание работать с файлом.
Вариант 2:
Этот способ подразумевает создание отдельного файла, который будет запускать файл Excel. Я предоставлю на выбор либо скрипт VBS, либо созданный мной файл EXE. В чем прелесть. При использовании данного способа совершенно неважно запущен ли уже у пользователя Excel или нет, разрешены ли макросы. Скрипт или EXE сам все запустит и разрешит.
Что такое скрипт VBS? Это обычный текстовый файл, сохраненный с расширением VBS. Такой файл распознается операционной системой как исполняемый и код, расположенный в нем, запускается при двойном щелчке на файле. Чтобы создать такой файл необходимо: создать обычный текстовый файл. Открыть его. Записать в него текст:
test Sub test() Dim objXL Dim Secur Set objXL = CreateObject("Excel.Application") objXL.Visible = TRUE secur = objXL.AutomationSecurity objXL.AutomationSecurity = 1 objXL.Workbooks.Open replace(Wscript.ScriptFullName,".vbs",".xls"). "4321" objXL.AutomationSecurity = secur End Sub
- пользователь совершает минимум действий
- макросы разрешены как ни крутись
Минусы:
- необходимость создания отдельного файла и привязка к имени
- возможность подсмотреть пароль к файлу, просто сменив расширение файла-скрипта на .txt
- возможность сменить/снять пароль к файлу после его открытия скриптом(можно избежать, внеся некоторый код в файл. Например сохранять только с нужным паролем). В примере пароль к файлу: 4321
Файл EXE. Долго пояснять не буду. Основные моменты все те же, что и со скриптом, т.к. в принципе это одно и то же, за исключением того, что код файла EXE нельзя подсмотреть, просто сменив расширение. А это значит, что и пароль к файлу подсмотреть тоже не получится(без использования специальных навыков и программ). Создается такой файл в специальной программной среде: С++, VisualBasic, Delphi и т.п. Основной минус: нельзя поменять пароль к файлу, не скомпилировав новый файл EXE. Т.е. если планируете использовать не с одним файлом, то надо всем им давать один и то же пароль, либо вообще не устанавливать пароль на открытие.
итак, у меня пару вопросов, уважаемы эксперты.
Во-первых, почему когда я создаю макрос, после закрытия-открытия файла он исчезает, может куда нажаь нужно.
Во-вторых, я не знаю точно как сделать задание 2.3, как создатьмакрос (процедуру-подпрограмму).
Заранее всех благодарю, посмотрите, пожалуйста.
Отключить макрос при закрытии книги
Всем добрый вечер! Подскажи пожалуйста, нужен был макрос который блокировал бы нажатия клавиш.
DefaultValue не сохраняется при закрытии формы
Проблема. На форме есть комбобокс. Значения там меняются редко. Жесткая установка значения по.
Переменная, значение которой сохраняется при закрытии программы
Как создать переменную, которая сохраняла бы свое, измененное в ходе работы программы, значение.
Событие, возникающее при закрытии книги
Мужики, нужна ваша помощь! Есть файл Excel 2010.. В нем прописано несколько Sub'ов.. Где и что.
Во-первых, почему когда я создаю макрос, после закрытия-открытия файла он исчезает, может куда нажаь нужно.
Во-первых, почему когда я создаю макрос, после закрытия-открытия файла он исчезает, может куда нажаь нужно.
надо сохранить с поддержкой макроса с расширением (.xlsx) скорее всего
Добавлено через 2 минуты
Кроме вас никто не знает лучше что именно надо, но по приведенному примеру можно лучше и эффективнее воспользоваться стандартны функциями Экселя и произвести условное форматирование, чем писать по задаче код
- студенты. Им задают задания в учебных заведениях. Студенты делятся на две группы: одним студентам нужна только работающая программа, другим нужно, чтобы программа была написана по каким-то правилам;
- люди, которые работают в программах MS Office, и которые хотят ускорить свою работу или избавиться от монотонной работы;
- программисты, которые сталкиваются с какими-то проблемами и спрашивают, как решить проблему.
формат Excel-файлов с поддержкой макросов - xlsm.
- в диапазоне "C3:H8"?
- определять максимальное число для всего диапазона "C3:H8" или для каждой строки, например, для строки "C3:H3" и т.д.?
В задании же ясно указано: для каждой строки.
И, кстати, функция дана готовая. ТС не может сам переписать в модуль?
Спасибо Всем большое. До задания 2.2 я вроде верно сделала, ее делать не надо, я добавила просто все задание.
Начиная с задания 2.3- я не знаю как делать правильно, у меня не получается.
SoftIce, у меня почему-то как у Вас заливка красным цветом не получилось
Странно, у меня всё работает, и ваш макрос "Цвет" тоже.
Если в выделенном диапазоне ячеек содержатся ячейки с отрицательным значением - то они заливаются красным
Удаление листов из книги при закрытии
Добрый день. нужно при закрытии файла удалить все листы, кроме листа "Макрос". Использую такую.
Выполнение события при закрытии книги
1)Знаю как зделать выполнение события при открытии книги: Private Sub Workbook_Open() End Sub Ка.
Закрытие книги Excel при закрытии формы
В общем хочу, чтобы при любом завершении моего приложения, срабатывал код закрытия книги. Через.
При закрытии Form всё сохраняется, как очистить всё?
Здравствуйте, такой вопросик, при закрытии формы, хоть me.close(), хоть me.hide(), всё почему то.
При закрытии одной книги записать информацию во вторую
Всем привет) столкнулся с проблемой: есть две книги в одну заношу информацию, и во вторую заношу.
Как при закрытии книги эксель - убрать иконку
Добрый вечер. Помогите решить вопрос. При открытии файл эксель подгружает иконку (.ico) по.
Нужен макрос что бы при закрытии книги, не выдавало окно с вопросом сохранения, а сохраняло сразу.
В книгу и модуль, сначала работает..
Открываешь снова изменяешь документ, нажимаешь закрыть - справшивает.
То есть макрос не работает
Макрос не сохраняется при закрытии книги
итак, у меня пару вопросов, уважаемы эксперты. Во-первых, почему когда я создаю макрос, после.
Выполнение события при закрытии книги
1)Знаю как зделать выполнение события при открытии книги: Private Sub Workbook_Open() End Sub Ка.
Удаление листов из книги при закрытии
Добрый день. нужно при закрытии файла удалить все листы, кроме листа "Макрос". Использую такую.
Событие, возникающее при закрытии книги
Мужики, нужна ваша помощь! Есть файл Excel 2010.. В нем прописано несколько Sub'ов.. Где и что.
WORD или Excel или еще где? Чтобы макрос работал его нужно вешать на событие закрытия книги.
в эксель
Igor_61, спасибо работает
Добавлено через 3 минуты
Igor_61,
При закрытии одной книги записать информацию во вторую
Всем привет) столкнулся с проблемой: есть две книги в одну заношу информацию, и во вторую заношу.
Excel При закрытии книги VB проект остается не выгруженным
В Excel на VBA написал проект, однако при закрытии книги этот проект почему-то остается не.
Как при закрытии книги эксель - убрать иконку
Добрый вечер. Помогите решить вопрос. При открытии файл эксель подгружает иконку (.ico) по.
Сделать так, чтобы при закрытии книги удалялась кнопка
Добрый день! Вопрос, наверное, простой, но я с ним промучалась уже два дня. Как программно.
Запуск макроса при закрытии любой активной рабочей книги
Есть макрос, в книге макросов, но как его запустить при закрытии любой активной рабочей книги.
Сохранение книги Excel в другом месте при закрытии файла
Здравствуйте, помогите макросом: на съемном носителе, который открывается с разных машин есть книга.
Не работают макросы в Excel? Включите их выполнение, добавьте специальный модель с кодом, проверьте версию ОС и Эксель, убедитесь в соответствии пакета приложений, активируйте Майкрософт Офис, снимите блокировку файла, проверьте систему безопасности и применяемые библиотеки. Ниже подробно рассмотрим, в чем могут быть причины подобной неисправности, и какие шаги предпринимать для ее устранения.
Причины
Для начала стоит разобраться, почему не работает макрос в Excel, ведь от этого зависят дальнейшие шаги. К основным причинам стоит отнести:
- Функция отключена.
- Отключение отслеживания событий.
- Устаревшая операционная система.
- Несоответствие разработчика пакета офисных приложений.
- Устаревшая версия Майкрософт Офис.
- Неактивированная версия Excel.
- Заблокированный файл.
- Неправильные настройки безопасности.
- Отсутствие необходимой библиотеки и т. д.
Выше рассмотрены основные причины, почему не удается выполнить макрос в Excel. Все они могут быть решены самостоятельно с помощью приведенных ниже рекомендации. Подробнее на решении вопроса остановимся ниже.
Что делать
Многие пользователи теряются в ситуации, когда не включаются или вообще не работают макросы в Excel. Такая проблема не дает нормально пользоваться приложением и заставляет искать альтернативные варианты.
Включите опцию
Первое, что необходимо сделать — включить функцию для обеспечения ее работоспособности. Здесь многое зависит от версии Эксель.
Если не работают макросы в Excel 2003, сделайте следующие шаги:
- Войдите в «Сервис».
- Перейдите в раздел «Безопасность».
- Кликните «Уровень макросов «Низкий».
В случае, когда не работают макросы в Excel 2007, включите их следующим образом:
- Жмите на кнопку «Офис».
- Войдите в параметры Excel.
- Кликните на «Центр управления безопасности».
- Войдите в «Параметры центра управления безопасностью».
- Жмите на «Параметры макросов».
- Кликните на «Разрешить все …».
В ситуации, когда не работают макросы в Excel 2016, сделайте следующие шаги:
- Войдите в раздел «Файл».
- Кликните на кнопку «Параметры».
- Зайдите в «Центр управления безопасностью».
- Войдите в «Параметры центра управления безопасностью».
- Кликните на «Параметры …».
- Жмите на «Разрешить все …».
После внесения изменений параметра безопасности перезапустите приложение Excel, а именно закройте его полностью и откройте снова. Лишь после этого изменения вступают в силу.
Добавьте нужный модуль в книгу
Бывают ситуации, когда макросы включены, но не работают в Excel из-за отключения каким-либо элементом отслеживания событий. В таком случае сделайте следующее:
- Перейдите в редактор VBA с помощью клавиш Alt+F11.
- Вставьте указанный ниже код.
- Для выполнения кода поставьте курсор в любой точке между началом и концом.
- Кликните F5.
Проверьте операционную систему
В ситуации, когда не отображаются макросы в Excel, обратите внимание на тип операционной системы. К примеру, Майкрософт Офис, который подходит для Виндовс, на Мак ОС уже работать не будет. Причина в том, что в приложении используются разные библиотеки. Даже если надстройки и функционируют, могут быть сбои в работе. Вот почему при появлении проблем нужно проверить ОС на соответствие.
Обратите внимание на разработчика
Если в Экселе не работают макросы, причиной может быть другой разработчик. Так, пользователи Excel часто применяют OpenOffice или LibreOffice. Эти пакеты созданы на разных языках программирования, которые имеют индивидуальные особенности. Так, если надстройки написаны на Visual Basic for Application, он может не работать в указанных выше офисных приложениях. Вот почему необходимо уточнять, для какого пакета создан макрос / надстройка.
Проверьте версию Майкрософт Офис
В Макрософт Офис 2003 применяются надстройки xla для Excel. В современных версиях расширение поменялось на xlam. Если ставить макросы старого типа в приложения Офис 2007 и больше, никаких трудностей не происходит. Если же вы попытаетесь поставить новую надстройку на старую версию Excel, она зачастую не работает. Вот почему важно обратить внимание на этот параметр при выборе.
Убедитесь в наличии пакета VBA
Одной из причин, почему не запускается макрос в Excel, может быть отсутствие пакета VBA. Для успешного запуска надстройки необходимо, чтобы этот пакет был установлен. Иногда он уже установлен в Офис, но так происходит не всегда. Для проверки жмите комбинацию на Alt+F11. Если после этого появляется Visual Basic, компонент можно считать установленным. В ином случае его нужно поставить. Для этого:
- Зайдите в «Пуск», а далее «Панель управления / Программы и компоненты».
- Выберите программу Майкрософт Офис.
- Жмите на кнопку «Изменить».
- Запустить файл установки Setup.exe.
- Кликните на «Добавить или удалить компоненты».
- Выберите в списке Visual Basic и установите его.
Активируйте Офис
Если в Excel 2007 не работает кнопка «макросы», причиной может быть отсутствие активации приложения. Для этого жмите на кнопку «Активировать» и следуйте инструкции. В большинстве случаев такая опция является платной.
Снимите блокировку файла
Учтите, что документ, полученный с другого ПК / ноутбука, может заблокироваться. Для разблокировки файла нужно нажать ПКМ и в разделе «Общие» кликнуть на «Разблокировать».
Проверьте библиотеки
Проверьте настройки безопасности
В ситуации, когда не работают макросы в Excel, можно добавить надежные расположения или настроить доступ к объектной модели VBA. Для этого в Офис 2007 необходимо сделать следующее:
- Войдите в Меню
- Кликните на пункт «Параметры».
- Жмите на «Центр управления безопасностью».
- Войдите в «Параметры центра управления безопасностью».
- Кликните на «Параметры макросов» и «Доверять доступ к объектной модели проектов».
В комментариях расскажите, какой из приведенных выше вариантов вам помог, и что еще можно сделать.
Предположим, Вы скачали файл с данного сайта с примером макроса, открываете файл, но макросы в нем не работают! Как такое может быть? Неужели автор сайта выложил неработающий пример и не знает об этом? И тем более как может случиться такое, что Вы перенесли со своего ПК на другой ПК файл с рабочими макросами на флешке, запускаете, а он не работает. Почему? Вроде все правильно делаете, да ведь и у Вас работает на ПК. И начинает закрадываться мысль: "А чем же этот ПК и 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 .
Читайте также: