Excel скрыть макрос в Excel

Обновлено: 05.07.2024

Когда вы добавляете макрос в книгу Excel, пользователи могут увидеть этот макрос в списке, выбрав Сервис|Макрос|Макросы.

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

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

Сделать макрос закрытым

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

Если я добавлю слово Private в начало строки Sub MySecretMacro, этот макрос не будет включен в список макросов.

Теперь в списке отображается только MyVisibleMacro.

Запустить скрытый макрос

Теперь, когда вы спрятали макрос, чтобы его не нашли обычные пользователи, как вы можете запустить его самостоятельно? Вот несколько способов запустить его

  • Откройте редактор Visual Basic (Alt+F11), щелкните где-нибудь в коде макроса, затем нажмите кнопку "Выполнить".
  • Если вы знаете имя макроса, введите его в поле имени слева от строки формул.
  • Нажмите клавишу Enter, и редактор Visual Basic откроется автоматически, а курсор в коде макроса начнет мигать.
  • Нажмите кнопку "Выполнить".
  • Прежде чем скрыть макрос, выберите «Инструменты|Макрос|Макросы», выберите макрос и нажмите кнопку «Параметры».
  • Введите сочетание клавиш (в данном примере Ctrl + Shift + M), затем нажмите "ОК".
  • Закройте диалоговое окно "Макрос".
  • Добавьте Private в код макроса, а затем используйте сочетание клавиш для его запуска при необходимости.

6 мыслей о «Скрыть макрос Excel»

<р>1. Запустите скрытый макрос, нажав клавиши ALT+F8, введя его имя и нажав «Выполнить».

<р>2. Вы можете скрыть все макросы в модуле, поместив tis вверху:

Дополнительный частный модуль.

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

Sub MySecretMacro(необязательный FakeArgument As String)
’ ваш код
End Sub

Спасибо, Ян Карел и JP!

Дебра,
Очень умная леди!
Спасибо.
Я часами искал правильную комбинацию и не мог понять, почему некоторые процедуры были недоступны для пользователей Excel, а другие — нет.
Это решило все мои проблемы с вызовом общедоступных процедур в частном модуле, которые используются рядом кодов форм.
Курт

[…] неделя Я написал статью о том, как скрыть макросы Excel, чтобы они не отображались в списке макросов. Работая над этой статьей, я заметил, что макрос […]

Если вы измените Sub на Private, сочетание клавиш больше не будет работать.

Оставить ответ Отменить ответ

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

Я только что закончил работу с VBA, и мне интересно, есть ли способ скрыть определенные макросы в Excel.

Мне нужно, чтобы пользователь запускал определенный макрос и только этот, но он показывает все вложенные макросы в Excel. Я хочу скрыть ненужные макросы от пользователя, чтобы пользователь случайно не щелкнул не тот макрос.



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

3 ответа 3

Вы также можете сделать это, поместив макросы, которые вы хотите скрыть, в отдельный модуль и используя Option Private Module в верхней части модуля перед кодом. Макросы по-прежнему будут доступны для вашего проекта, но не будут отображаться в макросах, видимых пользователю, когда он нажимает кнопку «Макросы».


Вы можете либо создать кнопку на ленте для запуска макроса, либо добавить "Private" перед каждым "Sub" в редакторе VBA, к которому вы не хотите, чтобы пользователь имел простой доступ.


Чтобы субъективно «скрыть» определенные подпроцедуры (например, «макросы») от (Alt+F8) разработчика, в диалоговом окне «Макросы» используется необязательный невариантный параметр, который ничего не значит.

Макрос meh не будет отображаться в списке макросов для запуска. Если вы затемните параметр как вариант, он будет отображаться в списке. Вероятно, это связано с тем, что необязательный параметр варианта может использовать функцию IsMissing. Его также нельзя будет запустить из VBE с помощью F5 или пройти через F8.

Тестовая подпроцедура запустит код правильно.

Экран. Ну нет, вы не можете увидеть его в диалоговом окне «Разработчик, код, макросы» (сочетание клавиш Alt + F8), но вы можете увидеть его на листе модуля с помощью «Разработчик, код, Visual Basic».Вот почему я сказал «субъективно», а не «буквально». Относительный, а не абсолютный, так сказать.

@dwirony - 'конечно, лучший метод - это, вероятно, использовать кнопку и пароль для проекта VBA, но если вы не хотите этого делать, то альтернативой является скрытие его от посторонних глаз с помощью этого метода.

Извините за неправильную терминологию. Из модуля листа, да. Даже с моим курсором в макросе нажатие f5 не запускает его, что мне показалось странным.

Здравствуйте, коллеги Excellers! Надеюсь, у вас все хорошо, и спасибо, что присоединились ко мне в очередной записи блога о макроэкономике в понедельник. Сегодня я хочу поделиться с вами тем, как защитить или скрыть свои макросы от посторонних глаз. Может быть ряд причин, по которым вы хотите скрыть свой Excel VBA от пользователей, точно так же, как вы хотели бы скрыть некоторые формулы от пользователей ваших книг Excel. В зависимости от уровня защиты, который вы хотите внедрить, вот как защитить код VBA, а также скрыть код VBA. Пользователь может свободно изменять любые макросы, которые есть в книге Excel. Как правило, я всегда защищаю свои макросы Excel.

Как защитить макросы Excel и VBA

Если вы хотите, чтобы ваши пользователи видели ваши макросы, но не могли их каким-либо образом изменить, защитите их паролем. Вот как защитить паролем ваши макросы

  • Откройте книгу, содержащую ваш макрос.
  • Если вкладка "Разработчик" не включена, включите ее. Дополнительную информацию о вкладке "Разработчик" и о том, как включить ее, можно найти в моем блоге здесь.
  • Откройте меню "Инструменты" и выберите "Свойства проекта VBA".
  • Выберите вкладку "Защита".
  • Нажмите "Заблокировать проект", чтобы внести изменения.
  • Просто дважды введите выбранный пароль
  • Наконец нажмите "ОК", чтобы закончить.

< бр />

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

Как скрыть макросы Excel и VBA

Если вы хотите поднять безопасность на новый уровень и скрыть свои макросы, чтобы их никто не видел, вы можете скрыть их.

  • Просто откройте макрос, который вы хотите скрыть от пользователей, когда они находятся в книге, и будет выбран список макросов.
  • Найдите первую строку Maro, которую вы хотите скрыть. После того, как вы нашли первую строку макроса, введите «Private» перед «Sub».
  • Это скроет макрос из списка макросов, сохраненных на листе Excel.

Давайте рассмотрим пример того, как скрыть макрос Excel.

В моей книге есть макрос SayHello. Вы можете увидеть код ниже.


Макрос легко увидеть, выбрав параметр "Макросы" на вкладке "Разработчик".


Итак, если мы вернемся к нашему коду VBA. Все, что нам нужно сделать, это ввести «Private» перед «Sub».


Теперь посмотрим, виден ли макрос после этого изменения. Кажется, он исчез!. Ваши пользователи также не смогут его увидеть.


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

Если вы хотите просмотреть все мои сообщения в блоге из серии «Макропонедельники», вы можете найти их все по ссылке ниже. Почему бы не добавить его в закладки? Да, он обновляется КАЖДЫЙ понедельник.

Как преуспеть в Excel — посты блога о макросах по понедельникам.

Если вам нужны дополнительные советы по Excel и VBA, подпишитесь на мою ежемесячную рассылку, где я делюсь 3 советами в первую среду месяца и получаю бесплатную электронную книгу, 30 советов по Excel.

Добавить записи в существующую таблицу доступа из Excel с помощью VBA

Получить информацию об устройстве USB (VBA и WMI)

3 функции FSO VBA: определение диска, папки и существования файла (+1 бонус)

Рисование кругов в AutoCAD с использованием Excel и VBA

Справка по программному обеспечению


сообщить об этом объявлении

3 способа скрыть вызов скрытых макросов в VBA

Введение

Распространенной практикой многих разработчиков VBA является ограничение доступа к коду, который они не хотят, чтобы пользователи «видели» в меню «Макросы» Excel (т. е. они создают скрытые макросы). Типичным примером этого является длинная процедура, состоящая из множества промежуточных шагов, и каждый шаг представляет собой отдельный макрос (например, обширный расчет, разбитый на 5 макросов).

В этом случае вы можете захотеть скрыть макросы промежуточных шагов от глаз пользователя, поскольку они бесполезны сами по себе (например, в последовательности макросов промежуточный макрос полезен только тогда, когда он вызывается в правильном порядке ), или они могут даже сломать что-то, если их случайно вызовут (например, удалить лист с важными данными). Только что описанная процедура технически является разновидностью инкапсуляции, широко известной в объектно-ориентированном программировании.

  1. Объявите макрос/подпрограмму с помощью ключевого слова Private.
  2. Сделать весь модуль частным (опция Private Module).
  3. Добавьте фиктивный необязательный параметр в объявление макроса/подпрограммы.

В следующих разделах мы увидим несколько примеров макросов, которые были «скрыты» с помощью приведенных выше предложений, а также соответствующие способы вызова этих макросов, несмотря на то, что они невидимы в меню «Макросы».

Примеры скрытых макросов/подпрограмм (невидимых в меню "Макросы")

Объявите макрос/подпрограмму с помощью ключевого слова Private

Следующие два подраздела (Module1 в образце книги) были написаны с использованием ключевого слова Private.

Сделать весь модуль приватным (опция Private Module)

Следующие макросы были явно объявлены общедоступными (примечание: даже если вы опустите ключевое слово Public, VBA по умолчанию распознает макросы как общедоступные). Однако в начале модуля (Module2 в образце рабочей книги) есть инструкция «Option Private Module», которая автоматически делает код во всем модуле невидимым.

Добавить фиктивный необязательный параметр в объявление макроса/подпрограммы

Наконец, третий вариант — использовать фиктивный необязательный параметр в объявлении макроса, как показано в макросе ниже (Module3 в образце рабочей книги). Параметр Dummy_Variable никогда не используется. Рекомендуется объявлять необязательный параметр, используя небольшой тип данных, например. Байт (= 1 байт) или логическое значение (= 2 байта).

Примеры вызова скрытых макросов/сабов

Вызов макроса напрямую

Это «стандартный» способ вызова макроса. Вы можете использовать имя модуля, если во всем коде VBA есть неоднозначность имени (например, два макроса с именем Macro1, но содержащиеся в разных модулях).

Игнорировать фиктивную переменную

Разновидность «стандартного» способа вызова макроса с игнорированием необязательного аргумента.

В следующем разделе "Загрузки" вы найдете образец книги со всеми способами скрытия и вызова скрытых макросов, описанными выше. Какой из них вам больше нравится?

Загрузки

Файл можно открыть в Excel 2007 или более поздней версии. Перед использованием включите макросы.

Читайте также: