VBA Excel — есть ли способ гарантировать, что пользователь не сможет вызвать/запустить макрос в текущем окне?

VBA Excel — есть ли способ гарантировать, что пользователь не сможет вызвать/запустить макрос в текущем окне?

Итак, я написал приложение VBA и заблокировал VBAProject (недоступно для просмотра). Но, конечно, пользователь все еще может иметь доступ к окну Immediate (если он, например, откроет другой файл Excel и нажмет на мой VBAProject, даже если он заблокирован). Несмотря на то, что мой VBAProject заблокирован и недоступен для просмотра, пользователь, у которого открыт другой Excel, может иметь доступ к моему окну Immediate и попытаться запустить мои макросы или ввести некоторые коды для запуска. Конечно, они не знают, как я назвал свои макросы, но, вероятно, могут запустить код, чтобы получить список имен (имен процедур). Итак, возможно ли запретить пользователю запускать любой код или вызывать любой макрос в моем окне VBAProject immediately?

решение1

Короткий ответ: используйте Privateключевое слово.

Более развернутый ответ: единственный способ защитить свой исходный код — никогда его не публиковать.

Развернутый ответ: можно создать проект VBA, который активно блокирует доступ к редактору VBA; но это неэтично и защищает ваш исходный код не лучше, чем пароль проекта.

Вспомните старую Workbook.Closeшутку, которая закрывает книгу сразу после ее открытия. Все, что нужно сделать пользователю, это отключить макросы и снова открыть книгу. То же самое касается всего, что вы пишете в VBA. Если вы полагаетесь на VBA для выполнения своих действий по обеспечению безопасности, то ваша безопасность заканчивается, когда макросы отключены.

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

Можно поговорить об использовании внешних инструментов вместо VBA или в сочетании с ним, но это значительно сложнее, чем вопрос, который вы задали. Это также будет соответствовать любому определению термина вредоносное ПО, если они ведут себя так, как вы предлагаете.

Связанный контент