Sei que é possível proteger com senha uma pasta de trabalho inteira do Excel com senha, mas posso abrir a pasta de trabalho (sem senha) e, no entanto, proteger apenas a macro?
(Estou usando o Excel 2007.)
Atualização: para ser claro, estou procurando proteger com senha o acesso à visualização da macro, não à execução. Portanto, todos devem poder executá-lo, mas somente eu posso acessar o código-fonte.
Você pode fazer a macro solicitar uma senha. Desde que o usuário não tenha as costeletas para procurar a senha no próprio código VBA, isso pode ser muito, muito fácil.
Basta usar um InputBox para solicitar a senha. Se a entrada corresponder a uma determinada sequência, você permitirá que a macro continue.
Você pode torná-lo mais complexo, mas ainda relativamente simples, convertendo o texto da senha em números e executando operações matemáticas nesses números para criar um "hash" simples. Depois, basta pegar qualquer entrada e executar as mesmas operações antes de executar a comparação.
Este link mostra como você pode usar esse método para verificar várias senhas possíveis e fazer coisas diferentes com base nelas: http://www.ozgrid.com/forum/showthread.php?t=68186&page=1
Este link mostra como substituir o texto de entrada por asteriks como uma caixa de senha "real": http://www.xcelfiles.com/API_09.html
fonte