snatg Пользователь Сообщений: 159 |
помогите, пожалуйста, не понимаю, что происходит, проблема началась некоторое время назад, и как-то ее удавалось обойти, но сейчас вот совсем не получается… дополню: я еще чего-то нажимала, эксель предложил сохранить файл как .xlsm и там все макросы видно… Изменено: snatg — 14.05.2021 21:28:48 |
buchlotnik Пользователь Сообщений: 3863 Excel 365 Бета-канал |
#2 14.05.2021 21:34:49
нет, не должны, в этом и отличие xlsx от xlsm — «m — значит макрос»; поэтому в обычном файле вы макросы не сохраните Соблюдение правил форума не освобождает от модераторского произвола |
||
Юрий М Модератор Сообщений: 60570 Контакты см. в профиле |
#3 14.05.2021 21:35:52
Нет — в xlsx макросы не живут. Сохрайняйте как книгу с поддержкой макросов. |
||
MikeVol Пользователь Сообщений: 229 Ученик |
#4 14.05.2021 21:36:14 snatg,
Доброг времени суток. Почитайте вот это: https://support.microsoft.com/ru-ru/office/%D0%BF%D0%BE%D0%B4%D0%B4%D0%B5%D1%80%D0%B6%D0%B8%D0%B2%D0%B0%D0%B5%D0%BC%D1%8B%D0%B5-excel-%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%82%D1%8B-%D1%84%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2-0943ff2c-6014-4e8d-aaea-b83d51d46247 Думаю вы сами поймёте. |
||
snatg Пользователь Сообщений: 159 |
buchlotnik, Юрий М, MikeVol, |
MikeVol Пользователь Сообщений: 229 Ученик |
snatg, возможно вы раньше запускали файл с расширением .xls и сами того не обратили внимание взяли и преобразовали его в .xlsx. И не обратили внимание на предупреждение от том что все макросы удаляться. |
Юрий М Модератор Сообщений: 60570 Контакты см. в профиле |
Ещё вариант: Вы скопировали макрос в новую книгу, потом запустили его — всё работало. Но потом сохранили не в том формате. |
snatg Пользователь Сообщений: 159 |
MikeVol, ну при чем тут удаление макросов? |
MikeVol Пользователь Сообщений: 229 Ученик |
snatg, ну тогда вам виднее. Экстрасенсорными возможностями не обладаю.все возможные варианты вам уже выложили. Курите ссылку что я скинул. А вы заладили что запускали макросы из файла .xlsx Изменено: MikeVol — 14.05.2021 21:57:17 |
snatg Пользователь Сообщений: 159 |
MikeVol, в ссылке как раз и сказано про XLSX: В этом формате нельзя сохранять код макросов |
Юрий М Модератор Сообщений: 60570 Контакты см. в профиле |
#11 14.05.2021 22:02:45
Такого не может быть. Если только в xlsx добавить макрос, выполнить его, то сработает. Но один раз (до закрытия книги), если не пересохранить файл в xlsm. |
||
snatg Пользователь Сообщений: 159 |
#12 14.05.2021 22:09:40
вот именно это (я не знаю сколько еще раз повторить одно и тоже!!!) мне и нужно было! |
||
Юрий М Модератор Сообщений: 60570 Контакты см. в профиле |
Список макросов может быть пуст, если Ваш макрос начинается с Private |
vikttur Пользователь Сообщений: 47199 |
#14 14.05.2021 22:32:59 … или в макрос передаются параметры (например: Sub kkk (i As Long))
Еще полтора часа тому, при создании первого сообщения, нужно было показать файл с этим макросом |
||
snatg Пользователь Сообщений: 159 |
#15 14.05.2021 23:07:08 файл у меня около 3 мб
не было там такого |
||
RAN Пользователь Сообщений: 7091 |
#16 15.05.2021 06:18:48 XLAM -это надстройка. А макросы из настроек в окне макросов не отображаются. |
I am writing VBA macros in excel 2016. Macros I write that have arguments do not show up in the Macro Table, only the ones that have no arguments. Help.
asked Dec 20, 2016 at 4:18
3
Macros that take arguments are not visible in the macro box because there is no point in having them there. If they need arguments to run, they cannot be run from the macro box because there is no way to supply an argument to the macro in question.
Normally, a macro shows up in the macro list when you display the
Macros dialog box (press Alt+F8), unless one of three conditions is
met:
The macro is a function. Functions typically return information,
and they require information to be passed to them. Since running a
macro from the macro list doesn’t allow either of these things to
happen, Excel figures there is no need to list it. User-defined
functions, which are quite useful in Excel, are not displayed in the
Macros dialog box because they are, after all, functions.The macro is
a subroutine with parameters. Excel assumes that since parameters are
necessary, and you cannot provide parameters by choosing the
subroutine from the macro list, there is no need to list it.The subroutine has been declared Private. This means that the subroutine
is only useful to code within the module in which it is declared.
Source.
Depending on your need, a possible workaround is to use a helper-sub like this:
Sub InvisibleMacro(strArg As String)
MsgBox("The passed argument was " & strArg)
' This macro won't be visible in the macro dialog because it can only be called with an argument
End Sub
Sub VisibleMacro()
Call InvisibleMacro("Abc")
' This macro will be visible in the macro dialog because it requires no arguments and is not private.
' It will call the "invisible" macro with a preset argument.
End Sub
You can use InputBox
or the likes if you need the passed argument to be non-static. Of course, depending on what datatype you need to pass as an argument, this approach may be limited and/or require some extra hoops.
answered Dec 20, 2016 at 7:58
VegardVegard
3,5572 gold badges22 silver badges40 bronze badges
3
Obviously if the macro requires parameters they can’t be passed by clicking an icon.
But I have a Sub that only has one Optional parameter and that doesn’t show up in the list either when trying to attach it to an icon in the customized ribbon.
Comment out the full Sub declaration and substitute a line without parameters, attach the macro to an icon, then put back the real line. The icon will still work.
' Temporarily use the parameterless line to set things up, then put
' back the real line. I assume this would crash if the Sub has required
' parameters.
Sub MySub()
' Sub MySub(Optional ByVal MyParm As String)
If MyParm = "" Then MyParm = "No parameter"
MsgBox (MyParm)
End Sub
answered Jan 13, 2018 at 8:22
RIck_RRIck_R
1113 bronze badges
I know this is an older post but I had the same issue. My fix was that I had to open the macros in the VB editor and then they showed up in the macro list. from there I could add them to the ribbon and change the icons. Hope this helps.
answered Mar 19, 2019 at 13:31
The macro is not listed when it has parameters, but knowing the name you should be able to simply write the name and theirs parameters when Excel prompts in the Assign Macro window, using single and double quotes.
The following example will guide you how to do it:
'mymacro "param1"'
'mymacro TRUE, FALSE'
'mymacro "param1","param2"'
fernandospr
2,9542 gold badges21 silver badges43 bronze badges
answered Sep 3, 2020 at 12:19
My problem was that I had defined Macro directly through Visual Basic Editor in Excel and had defined it under «Class Modules» folder instead of «Modules»
Once I moved it into Modules folder, it was visible.
Hope this helps someone.
answered Aug 11, 2022 at 5:09
You probably have made macro as «Function()». To make it visible in macros list, you have to declare it as «Sub()».
answered Dec 20, 2016 at 4:53
1
Microsoft Excel – это популярное для работы с таблицами приложение, используемое в офисах и дом…
Microsoft
Excel – это популярное для работы с
таблицами приложение, используемое в
офисах и домах 90% людей. Несмотря на то
что программе уже 34 года, новые возможности
продолжают добавляться в обновлениях.
Поэтому программа до сих пор популярна.
Чтобы облегчить себе работу, нужно
знать, как работают эти опции. Для начала расскажем о том, что такое
макросы, а потом – как
включить макросы в Excel
2010, 2007, 2003.
Что
такое макрос?
До
того как
включить макросы в Excel,
необходимо
узнать, для чего они нужны. Макросы –
это сохраненные в строках таблицы
заранее созданные последовательности
действий с данными. Реализованы на языке
VBA, что позволяет работать не только с
командами Экселя, но и других приложений
Office, поддерживающих этот язык. Используя
макросы, можно настроить автоматическое
форматирование строк таблицы, отправку
по почте, или создание презентации.
Описание
параметров макросов
После
сохранения макросы содержат пять
параметров работы, необходимых для
обеспечения защищенности при взаимодействии
с ними, так
как включить макросы в Excel
легко,
а избавляться от вирусов – нет.
- Отключить макросы без уведомления.
Применяется
для таблиц, автор которых неизвестен.
Деактивирует сохраненные в ячейках
макросы, не предупреждая об этом.
Пользуйтесь им при опасности вирусов
в таблице. - Отключить макросы с уведомлением.
Этот
режим выбран стандартно. Предлагает
выключать макросы, но перед этим
запрашивает разрешения пользователя.
С ним вы сможете решать, оставлять ли,
или нет отдельно каждый макрос. - Отключить макросы, кроме макросов с
цифровой подписью.
Похож
на предыдущий, но автоматически разрешает
использование макросов, подписанных
цифровой подписью предприятия, доверие
которому вы уже подтвердили. - Включить макросы.
Из
названия понятно, что параметр разрешает
использование макрокоманд, записанных
в таблицу. - Доверять доступ к объектной модели
проектов VBA.
Показатель
для разработчиков, открывающий доступ
таблицы к программам, написанным для
модели VBA любого приложения, по желанию
пользователя. Это позволяет программисту
настраивать, какой код имеет доступ к
макросам, и куда макросы могут отправлять
данные. При этом взломать или повредить
работу команд программиста практически
невозможно. Но новичку в VBA лучше не
использовать этот параметр.
Как включить
макросы в Excel
Существует
три версии Экселя, где активация макросов
отличается друг от друга. Сначала
рассмотрим, как
включить макросы в Excel
2010.
Как
включить макросы в MS
Excel 2010
В
2010 версии Экселя разработчики сделали
упор на безопасность, поэтому для
включения макросов нужно сделать
следующее:
- В верхнем меню приложения нажмите
«Файл». - Откроется список, выбрать предпоследний
пункт – «Параметры». - Нажмите,
и попадете в окно «Параметры Excel». Слева
перейдите в «Центр управления
безопасностью».
- Справа в тексте кликните «Параметры…».
- Откроется еще одно меню, где нужно
выбрать «Параметры макросов». - Отметьте один из пунктов, нажмите «Ок».
- Закройте и запустите
Excel снова, для вступления изменений в
силу.
Как
включить макросы в MS
Excel 2007
Здесь
способ не сильно отличается от того,
как
включить макросы в Excel
2010:
- Нажмите кнопку «Файл» (круглая желтая
кнопка с цветными квадратами) слева
сверху окна. - В правой нижней части меню кликните на
«Параметры Excel».
- Перейдите в раздел «Центр управления
безопасностью», а затем «Параметры
центра…» - В открывшемся меню отметьте режим работы
макросов, который нужен.
- Перезапустите Эксель.
Как
включить макросы в MS
Excel 2003
2003
Эксель уступает в безопасности 2010-му,
и включить макросы в нем легче, но важно
тщательно проверять файлы на вирусы,
пользуясь им. Включить исполнение
макросов можно так:
- В
открытом приложении нажмите на кнопку
«Сервис» в верхнем меню. - В выпадающем списке нажмите на «Макрос»,
и «Безопасность». - Откроется меню безопасности, где нужно
отметить уровень безопасности для
макросов. - Нажмите
«Ок», и перезайдите в Эксель.
Способы
Включить
макрокоманды можно одним из трех путей:
-
во
время показа окна сообщения; -
с
помощью Backstage; -
когда
появляется предупреждение системы
безопасности.
Во
время показа окна сообщения
Дополнительный
способ работает, когда в Экселе открывается
файл, содержащий макрокоманды. В верхней
части листа появляется желтая карточка
с надписью «Предупреждение системы
безопасности». Кликните по «Включить
содержимое», и они активируются.
С
помощью Backstage
Если
открыть книгу с макросами, в меню «Файл»
появляется сообщение, позволяющее
активировать их. Для этого сделайте
следующее:
- Раскройте меню «Файл» — левая в ленте
вверху страницы. - В окне «Предупреждение системы
безопасности» кликните по «Включить
содержимое». - Появится диалоговое меню, где необходимо
будет отметить «Всегда включать активное
содержимое этого документа».
После
того как все получилось, перезагрузите
приложение.
Активировать
на одну сессию при появлении предупреждения
системы безопасности
Способ
включения только на один раз для одной
книги:
- Раскройте меню «Файл» — левая в ленте
вверху страницы. - В окне «Предупреждение системы
безопасности» кликните по «Включить
содержимое». - Перейдите в раздел «Дополнительные
параметры». - В появившемся поле активируйте пункт
«Включить содержимое для этого сеанса»
по очереди для каждого из макросов. - Сохраните изменения, кликнув «Ок».
Не отображается макрос среди всех открытых книг |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
Макросы, которые принимают аргументы, не видны в блоке макросов, потому что нет никакого смысла в их наличии. Если им нужны аргументы для запуска, они не могут быть запущены из поля макроса, потому что нет способа предоставить аргумент для рассматриваемого макроса.
Обычно макрос отображается в списке макросов при отображении диалогового окна «Макросы» (нажмите Alt+F8), если не выполняется одно из трех условий:
Макрос это функция. Функции обычно возвращают информацию, и они требуют, чтобы информация была передана им. Поскольку запуск макроса из списка макросов не позволяет ни одной из этих вещей произойти, Excel считает, что нет необходимости перечислять его. Пользовательские функции, которые весьма полезны в Excel, не отображаются в диалоговом окне «Макросы», потому что они, в конце концов, являются функциями.
Макрос — это подпрограмма с параметрами. Excel предполагает, что поскольку параметры необходимы, и вы не можете предоставить параметры, выбрав подпрограмму из списка макросов, нет необходимости перечислять ее.
Подпрограмма была объявлена Private. Это означает, что подпрограмма полезна только для кода внутри модуля, в котором она объявлена.
Источник
В зависимости от ваших потребностей, возможный обходной путь заключается в использовании вспомогательного сабвуфера, подобного следующему:
Sub InvisibleMacro(strArg As String)
MsgBox("The passed argument was " & strArg)
' This macro won't be visible in the macro dialog because it can only be called with an argument
End Sub
Sub VisibleMacro()
Call InvisibleMacro("Abc")
' This macro will be visible in the macro dialog because it requires no arguments and is not private.
' It will call the "invisible" macro with a preset argument.
End Sub
Ты можешь использовать InputBox
или лайки, если вам нужно, чтобы переданный аргумент был нестатичным. Конечно, в зависимости от того, какой тип данных вам нужно передать в качестве аргумента, этот подход может быть ограничен и / или потребовать дополнительных обручей.
Не работают макросы в Excel? Включите их выполнение, добавьте специальный модель с кодом, проверьте версию ОС и Эксель, убедитесь в соответствии пакета приложений, активируйте Майкрософт Офис, снимите блокировку файла, проверьте систему безопасности и применяемые библиотеки. Ниже подробно рассмотрим, в чем могут быть причины подобной неисправности, и какие шаги предпринимать для ее устранения.
Причины
Для начала стоит разобраться, почему не работает макрос в Excel, ведь от этого зависят дальнейшие шаги. К основным причинам стоит отнести:
- Функция отключена.
- Отключение отслеживания событий.
- Устаревшая операционная система.
- Несоответствие разработчика пакета офисных приложений.
- Устаревшая версия Майкрософт Офис.
- Неактивированная версия Excel.
- Заблокированный файл.
- Неправильные настройки безопасности.
- Отсутствие необходимой библиотеки и т. д.
Выше рассмотрены основные причины, почему не удается выполнить макрос в Excel. Все они могут быть решены самостоятельно с помощью приведенных ниже рекомендации. Подробнее на решении вопроса остановимся ниже.
Что делать
Многие пользователи теряются в ситуации, когда не включаются или вообще не работают макросы в Excel. Такая проблема не дает нормально пользоваться приложением и заставляет искать альтернативные варианты.
Включите опцию
Первое, что необходимо сделать — включить функцию для обеспечения ее работоспособности. Здесь многое зависит от версии Эксель.
Если не работают макросы в Excel 2003, сделайте следующие шаги:
- Войдите в «Сервис».
- Перейдите в раздел «Безопасность».
- Кликните «Уровень макросов «Низкий».
В случае, когда не работают макросы в Excel 2007, включите их следующим образом:
- Жмите на кнопку «Офис».
- Войдите в параметры Excel.
- Кликните на «Центр управления безопасности».
- Войдите в «Параметры центра управления безопасностью».
- Жмите на «Параметры макросов».
- Кликните на «Разрешить все …».
В ситуации, когда не работают макросы в Excel 2016, сделайте следующие шаги:
- Войдите в раздел «Файл».
- Кликните на кнопку «Параметры».
- Зайдите в «Центр управления безопасностью».
- Войдите в «Параметры центра управления безопасностью».
- Кликните на «Параметры …».
- Жмите на «Разрешить все …».
После внесения изменений параметра безопасности перезапустите приложение Excel, а именно закройте его полностью и откройте снова. Лишь после этого изменения вступают в силу.
Добавьте нужный модуль в книгу
Бывают ситуации, когда макросы включены, но не работают в Excel из-за отключения каким-либо элементом отслеживания событий. В таком случае сделайте следующее:
- Перейдите в редактор VBA с помощью клавиш Alt+F11.
- Вставьте указанный ниже код.
Sub Reset_Events()
Application.EnableEvents = True
End Sub
- Для выполнения кода поставьте курсор в любой точке между началом и концом.
- Кликните 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, причиной может быть появление ошибки «Can’t find project or library». При этом, надстройка работает на другом ПК / ноутбуке, а здесь возникают проблемы. Ошибку легко устранить, если в окне, которое идет за сообщением об ошибке, снять отметки в полях Missing. Для вызова окна можно выбрать пункт меню Tools / References.
Проверьте настройки безопасности
В ситуации, когда не работают макросы в Excel, можно добавить надежные расположения или настроить доступ к объектной модели VBA. Для этого в Офис 2007 необходимо сделать следующее:
- Войдите в Меню
- Кликните на пункт «Параметры».
- Жмите на «Центр управления безопасностью».
- Войдите в «Параметры центра управления безопасностью».
- Кликните на «Параметры макросов» и «Доверять доступ к объектной модели проектов».
Зная, почему не работают макросы в Excel, вы можете с легкостью исправить проблему и восстановить работоспособность. Если же сложности в работе возникают, вы всегда можете воспользоваться инструкцией в статье.
В комментариях расскажите, какой из приведенных выше вариантов вам помог, и что еще можно сделать.
Отличного Вам дня!