VBA excel - Existe alguma maneira de garantir que o usuário não possa chamar/executar uma macro na janela imediata?

VBA excel - Existe alguma maneira de garantir que o usuário não possa chamar/executar uma macro na janela imediata?

Então, escrevi um aplicativo VBA e bloqueei o VBAProject (invisível). Mas é claro que o usuário ainda pode ter acesso à Janela Imediata (se abrir outro arquivo excel por exemplo e clicar no meu VBAProject, mesmo que bloqueado). Apesar do meu VBAProject estar bloqueado e invisível, o usuário, com outro Excel aberto, pode ter acesso à minha Janela Imediata e tentar executar minhas macros ou digitar alguns códigos para executar. Claro, eles não sabem como nomeei minhas macros, mas provavelmente podem executar um código para obter a lista de nomes (nomes de procedimentos). Então - é possível impedir que um usuário execute qualquer código ou chame qualquer macro na minha janela imediata do VBAProject?

Responder1

A resposta curta: use a Privatepalavra-chave.

Uma resposta mais longa: a única maneira de proteger seu código-fonte é nunca liberá-lo.

A resposta longa: é possível criar um projeto VBA que bloqueie ativamente o acesso ao editor VBA; mas isso é antiético e não protege seu código-fonte mais do que uma senha de projeto.

Considere a velha Workbook.Closepegadinha que fecha uma pasta de trabalho imediatamente após ela ser aberta. Tudo o que o usuário precisa fazer é desabilitar as macros e reabrir a pasta de trabalho. O mesmo vale para qualquer coisa que você escreva em VBA. Se você depende do VBA para executar sua ação de segurança, sua segurança termina quando as macros são desativadas.

Compare isso com a segurança que você obtém com uma senha de projeto. Claro, quebrar a senha é trivial para a maioria dos desenvolvedores, mas requer mais esforço e impedirá a maioria dos usuários casuais. É importante ressaltar que isso mantém você e seu software no lado respeitado da linha.

Há uma conversa sobre o uso de ferramentas externas no lugar ou em conjunto com o VBA, mas isso é substancialmente mais complicado do que a pergunta que você fez. Isso também atenderia a qualquer definição de termo malware se eles se comportassem como você propõe.

informação relacionada