Уважаемые, помогите пожалуйста. Как сделать так чтобы процедура (excel) вызывалась из других модулей этой же книги, но не была видимой в списке макросов (чтобы пользователь не мог запустить макрос). Чего-то не могу ничего раскопать по теме.
Private не дает вызывать процедуру из других модулей, public же помещает название процедуры в список макросов из которого его может запустить любой пользователь даже если проект защищен. Может запретить вообще просмотр списка макросов или заблокировать как-то запуск макросов из него. В какой стороне ответ искать?
блокировка ручного запуска макроса пользователем
Модератор: Naeel Maqsudov
- EducatedFool
- Сообщения: 197
- Зарегистрирован: 06 апр 2008, 14:03
- Откуда: Россия, Урал
- Контактная информация:
Можно объявить макрос как функцию:
И вызывать эту функцию и кода как любой другой макрос:
Код: Выделить всё
Function МойНевидимыйМакрос()
Debug.Print 123
End Function
Код: Выделить всё
Sub ВидимыйМакрос()
МойНевидимыйМакрос
End Sub
- Naeel Maqsudov
- Сообщения: 2570
- Зарегистрирован: 20 фев 2004, 19:17
- Откуда: Moscow, Russia
- Контактная информация:
Также не видны процедуры Sub, которые имеют в списке формальных параметров хотя бы один параметр.
А еще не видны процедуры из надстроек (XLA). Т.е. если надстройка сожержит макрос, то его будет не видно в списке макросов в любом случае.
А еще не видны процедуры из надстроек (XLA). Т.е. если надстройка сожержит макрос, то его будет не видно в списке макросов в любом случае.
Пусть, например, имеется макрос Private Sub Test(). Т.е. макрос без параметров, который не виден в списке макросов.
Запустить такой макрос из другого модуля можно используя команду
Запустить такой макрос из другого модуля можно используя команду
Код: Выделить всё
Run "Test"
Спасибо всем большое! Вариант SAS888 в конечном итоге взял на вооружение - выглядит просто и наглядно.