Workbook_Open () não funciona com Workbook Protection
Estou usando o Excel 2016 e tenho este código escrito no objeto ThisWorkbook no VBA:
Private Sub Workbook_Open()
ThisWorkbook.Protect (password = "password")
End Sub
Não está funcionando. O ponto aqui é que isso deve impedir que os usuários toquem nas funções do Power Query nesta pasta de trabalho. Eu salvei como uma pasta de trabalho habilitada para macro, tenho todas as macros e eventos habilitados e esta é a única pasta de trabalho aberta.
Eu também tenho este código adicional:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
ThisWorkbook.Protect (password = "password")
ThisWorkbook.Save
End Sub
E isso também não está funcionando. Funciona bem se eu inserir o código "ThisWorkbook.Protect" em um módulo geral ou objeto de planilha e executá-lo manualmente, mas quando eu quero que esse arquivo Excel em particular execute este código automaticamente ao abrir ou fechar, ele não o faz.
Alguma ideia sobre o que poderia estar causando isso?
Respostas
Por algum motivo, a execução ThisWorkbook.Protectem uma pasta de trabalho protegida parece desprotegê-la (embora eu não tenha conseguido encontrar nenhuma documentação que diga que faz isso), então tente isto:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
If Not ThisWorkbook.ProtectStructure Then ThisWorkbook.Protect Password:="password"
ThisWorkbook.Save
End Sub