Страница 1 из 1

блокировка ручного запуска макроса пользователем

Добавлено: 08 фев 2009, 18:15
district
Уважаемые, помогите пожалуйста. Как сделать так чтобы процедура (excel) вызывалась из других модулей этой же книги, но не была видимой в списке макросов (чтобы пользователь не мог запустить макрос). Чего-то не могу ничего раскопать по теме.

Private не дает вызывать процедуру из других модулей, public же помещает название процедуры в список макросов из которого его может запустить любой пользователь даже если проект защищен. Может запретить вообще просмотр списка макросов или заблокировать как-то запуск макросов из него. В какой стороне ответ искать?

Re: блокировка ручного запуска макроса пользователем

Добавлено: 08 фев 2009, 20:11
EducatedFool
Можно объявить макрос как функцию:

Код: Выделить всё

Function МойНевидимыйМакрос()
    Debug.Print 123
End Function
И вызывать эту функцию и кода как любой другой макрос:

Код: Выделить всё

Sub ВидимыйМакрос()
    МойНевидимыйМакрос
End Sub

Re: блокировка ручного запуска макроса пользователем

Добавлено: 08 фев 2009, 21:21
Naeel Maqsudov
Также не видны процедуры Sub, которые имеют в списке формальных параметров хотя бы один параметр.

А еще не видны процедуры из надстроек (XLA). Т.е. если надстройка сожержит макрос, то его будет не видно в списке макросов в любом случае.

Re: блокировка ручного запуска макроса пользователем

Добавлено: 09 фев 2009, 06:25
SAS888
Пусть, например, имеется макрос Private Sub Test(). Т.е. макрос без параметров, который не виден в списке макросов.
Запустить такой макрос из другого модуля можно используя команду

Код: Выделить всё

Run "Test"

Re: блокировка ручного запуска макроса пользователем

Добавлено: 09 фев 2009, 23:10
district
Спасибо всем большое! Вариант SAS888 в конечном итоге взял на вооружение - выглядит просто и наглядно.