Macro para Proteger Planilha, Sem Senha e Sem opção de Selecionar Céluas Protegidas

A intenção é possibilitar a execução de algumas macros que tenho em minha pasta de trabalho, que não funcionam quando a planilha está protegida. Por este motivo, pensei em executar, antes de cada macro, uma macro que desprotege a planilha e, no final, uma outra macro que volte a protegê-la.

Quando à desproteção, uma macro gravada com o seguinte código, funciona sem problemas.

Código para desproteger, que funciona sem problemas.

O problema é que, para proteger, ao executar a macro que segue como exemplo, uma caixa de diálogo pede senha e parâmetros de proteção.

Código que não omite a confirmação de senha.

Caixa de Diálogo que se pretende omitir

Uma solução aproximada está no seguinte tópico:

Porém, a proteção não impede a seleção das células protegidas.

Outro problema (que o exemplo acima não atende) é que tenho diferentes planilhas na mesma pasta de trabalho que utilizam as mesmas macros, que funcionam na planilha ativa. Ter que especificar a planilha que quero desproteger traria a necessidade de se fazer um código diferente para proteger cada planilha.

Portanto, preciso de um código que proteja a Planilha Ativa, Sem Pedir Senha de Proteção e sem permitir “Selecionar células protegidas” depois da proteção.

@Carlos2,

Esta opção é inacessível via API ou Dispatcher. Foi um recurso implementado apenas parcialmente, mas que hoje está com o bug #55969 aberto solicitando a publicação de métodos na API para manipular as duas opções.


Já com relação ao outro problema, basta você substituir a linha:
oPlan = oDoc.Sheets.getByName( "Planilha" ) 

por:

oPlan = oDoc.CurrentController.ActiveSheet


Atte,

Obrigado, Grafeno. Foi esclarecedor - pelo menos pra que eu não perca mais tempo procurando uma solução. Quanto ao problema da desproteção da planilha ativa, funcionou corretamente com a alteração sugerida. Valeu!