Страницы: 1
RSS
Защитить код паролем но оставить доступ к макросам
 
Добрый день.

Такая задача: Нужно защитить код vba НАДСТРОЙКИ (*.xlam) .

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

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

Версия excel - 2016.
 
Наименования процедур хранимых в настройке не показываются вне зависимости есть пароль на проект или нет. Используйте прямой путь к надстройке.
«Бритва Оккама» или «Принцип Калашникова»?
 
Цитата
slepoi_kamin написал:
могли использовать макросы и назначать их кнопкам
использовать могут, если Вы об этом сами позаботитесь заранее. А назначать их кнопкам не смогут, т.к. макросы будут недоступны для открытого использования через Alt+F8 или из меню Разработчик. При этом совершенно неважно, защищен проект паролем или нет.
Создайте надстройку, сделайте к ней кнопки и все. Пусть сами жмут что им надо: Как создать свою надстройку?
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Цитата
bedvit написал:
Наименования процедур хранимых в настройке не показываются вне зависимости есть пароль на проект или нет.
Цитата
Дмитрий(The_Prist) Щербаков написал:
А назначать их кнопкам не смогут, т.к. макросы будут недоступны для открытого использования через Alt+F8 или из меню Разработчик. При этом совершенно неважно, защищен проект паролем или нет.
Эти два утверждения однозначно неверны. Как я и писал выше, наименования процедур доступны из меню настройки ленты, если проект надстройки не защищен. Во всяком случае в 2016 excel это так. Тестировалось многократно.

Цитата
Дмитрий(The_Prist) Щербаков написал:
Создайте надстройку, сделайте к ней кнопки и все. Пусть сами жмут что им надо:  Как создать свою надстройку?
Дмитрий, за статью спасибо. Полезно, хоть и не очень удобно. В нашем случае удобнее, когда они могут сами выбирать что им надо, а не искать среди кучи кнопок.
Если нет другого выбора, буду делать так.

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

Я делаю так: сначала назначаю макрос из надстройки кнопке и только потом защищаю надстройку паролем.
Макросы теперь из надстройки не видны - кнопка (и назначенный её макрос) работает.
Юзеру больше ничего не требуется.
 
Цитата
slepoi_kamin написал:
Эти два утверждения однозначно неверны
это если читать не совсем то, что написано, а то, что хочется прочитать :) Я написал весьма однозначно:
Цитата
Дмитрий(The_Prist) Щербаков написал:
недоступны для открытого использования через Alt+F8 или из меню Разработчик
попробуйте найти по Alt+F8 или из одноименной команда Макросы из вкладки Разработчик :) Не получится.
Цитата
slepoi_kamin написал:
при его использовании пропадает возможность использования написанных макросов (процедур)
вот на это скорее был ответ. Из настройки ленты да, не найти, если стоит защита. Что считаю правильным. Но и я, конечно, не все прочитал, а то, что хотел :) Т.к. в первом сообщении так же однозначно упоминалось про ленту. Видимо, недостаточный акцент был сделан именно на это.
И, кстати - это можно обойти
Цитата
slepoi_kamin написал:
хоть и не очень удобно. В нашем случае удобнее, когда они могут сами выбирать что им надо, а не искать среди кучи кнопок
Достаточно создать надстройку, сделать в ней все кнопки для всех макросов и предоставить пользователям. Все эти кнопки будут доступны при настройке ленты. Пусть выбирают из списка доступных команды те, которые назначены для надстройки(они появятся в общем списке команд). А после этого можно просто скрыть саму вкладку надстройки из того же меню. Вот и будут только те, что нужны и там, где нужны.
Или пойти еще кардинальнее и при создании схемы для надстройки поставить свойство Visible вкладки надстройки в false:
Код
<tab id="excel-vba" label="Test excel-vba.ru" visible="false" >
тогда при запуске сама вкладка не будет отображаться, а все кнопки для неё созданные - будут доступны из настройки ленты "Все команды"
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Страницы: 1
Наверх