Desproteger planilhas do Excel
Hoje no meu serviço, tive que desbloquear uma planilha do excel para editar alguns campos que quem protegeu, não desenvolveu corretamente, e estava exibindo valores incorretos, e então corri pela web para procurar algo, e encontrei um método através da criação de macro.
A planilha, estava no formato do Office 2007, mas é possível salvar para o Office 2003 em modo de compatibilidade. O computador que usei para tentar realizar o truque era Windows XP com o Office 2003.
Devido uma falha de segurança bem simples, é possível adicionar qualquer macro em qualquer tipo de planilha no Office 2003, inclusive as protegidas. Com uma macro, da qual é possível inserir em várias planilhas protegidas, é possível destravá-la rapidamente. Para isto, deve-se manter sobre a planílha protegida, ir no menu Ferramentas > Macro > Macros... ou simplesmente apertar ALT+F8.
A macro cria um loop utilizando todas as senhas possíveis, como o excel não tem um limite de tentativas, e as tentativas em um computador local são extremamente rápidas do que em serviços na internet, todas as senhas possíveis são testadas e a planilha é desbloqueada, retirando a senha.
Para quem não sabe, o recurso de proteger planilha, serve para manter os dados como "somente leitura", campos, funções, entre outros, impedindo a modificação sem a senha correta.
Estando protegida, a pessoa que deseja mudar algum campo protegido, aparecerá uma mensagem de alerta como abaixo:
Passo à passo:
Crie uma nova macro com o nome: DesprotegerPlanilhaAtiva.
Logo após, aparecerá uma janela editável com duas linhas preenchidas como à seguir:
Entre as duas linhas, insira o código:
Feche a tela de edição da Macro e volte para sua planilha do excel. Pressione ALT+F8, selecione a macro "DesprotegerPlanilhaAtiva" e clique em "Executar".
A macro permanece dentro da planilha protegida, clique na planilha desejada, e através do comando ALT+F8, execute a macro. Aguarde até que apareça a janela de confirmação da qual foi desprotegido.
Quanto maior a senha que foi criada, mais tempo leva para que o código seja executado, ou seja, não preocupe-se caso ocorra de acontecer "Não respondendo", pois na realidade, o código que está sendo executado, geralmente consome recursos do processador, e o Windows identifica que isto gerou um loop infinito, mas não é infinito, e não dura mais que 30 segundos com uma senha de 17 dígitos (testado).
Fonte: http://www.guiadohardware.net/comunidade/desproteger-planilha/299297/
A planilha, estava no formato do Office 2007, mas é possível salvar para o Office 2003 em modo de compatibilidade. O computador que usei para tentar realizar o truque era Windows XP com o Office 2003.
Devido uma falha de segurança bem simples, é possível adicionar qualquer macro em qualquer tipo de planilha no Office 2003, inclusive as protegidas. Com uma macro, da qual é possível inserir em várias planilhas protegidas, é possível destravá-la rapidamente. Para isto, deve-se manter sobre a planílha protegida, ir no menu Ferramentas > Macro > Macros... ou simplesmente apertar ALT+F8.
A macro cria um loop utilizando todas as senhas possíveis, como o excel não tem um limite de tentativas, e as tentativas em um computador local são extremamente rápidas do que em serviços na internet, todas as senhas possíveis são testadas e a planilha é desbloqueada, retirando a senha.
Para quem não sabe, o recurso de proteger planilha, serve para manter os dados como "somente leitura", campos, funções, entre outros, impedindo a modificação sem a senha correta.
Estando protegida, a pessoa que deseja mudar algum campo protegido, aparecerá uma mensagem de alerta como abaixo:
Passo à passo:
Crie uma nova macro com o nome: DesprotegerPlanilhaAtiva.
Logo após, aparecerá uma janela editável com duas linhas preenchidas como à seguir:
Entre as duas linhas, insira o código:
Dim i,i1,i2,i3,i4,i5,i6,j,k,l,m,n:On Error Resume Next:For i = 65 To 66: For j = 65 To 66: For k = 65 To 66: For l = 65 To 66: For m = 65 To 66: For i1 = 65 To 66: For i2 = 65 To 66: For i3 = 65 To 66: For i4 = 65 To 66: For i5 = 65 To 66: For i6 = 65 To 66: For n = 32 To 126: ActiveSheet.Unprotect Chr(i) & Chr(j) & Chr(k) & Chr(l) & Chr(m) & Chr(i1) & Chr(i2) & Chr(i3) & Chr(i4) & Chr(i5) & Chr(i6) & Chr(n)
If ActiveSheet.ProtectContents = False Then MsgBox "Planilha desprotegida com sucesso!!!": Exit Sub
End If: Next: Next: Next: Next: Next: Next: Next: Next: Next: Next: Next: Next
Feche a tela de edição da Macro e volte para sua planilha do excel. Pressione ALT+F8, selecione a macro "DesprotegerPlanilhaAtiva" e clique em "Executar".
A macro permanece dentro da planilha protegida, clique na planilha desejada, e através do comando ALT+F8, execute a macro. Aguarde até que apareça a janela de confirmação da qual foi desprotegido.
Quanto maior a senha que foi criada, mais tempo leva para que o código seja executado, ou seja, não preocupe-se caso ocorra de acontecer "Não respondendo", pois na realidade, o código que está sendo executado, geralmente consome recursos do processador, e o Windows identifica que isto gerou um loop infinito, mas não é infinito, e não dura mais que 30 segundos com uma senha de 17 dígitos (testado).
Fonte: http://www.guiadohardware.net/comunidade/desproteger-planilha/299297/
Aristote,bom dia !!!
ResponderExcluirCaro desculpe pela sinceridade e objetivo, estou começando duas semanas em uma empresa e estou tendo muito problema com uma planilha de controle de estoque que está em vba excel protegida e não sei a senha e a pessoa que criou a mesma saiu e não deixou o problema é que ele configurou a mesma para determinadas linhas e quando tento cadastro um novo produto na aba(demonstrativo) some um item tem como de ajuda por favor.
João e-mail; [email protected]
Ai amigo deu super certo.
ResponderExcluirNão teria um código desse tipo só
que para desbloquear um arquivo excel vba?
Pois o caso esta tão critico que eu não
consigo sequer grava a macro, logo não da
para executa-lá. É como se a restrição estive se
protegendo ate os UserForms e não só as planilha. meu e-mail é [email protected]
Muito Bom!!! funcionou perfeito!!
ResponderExcluirFuncionou muito bem!
ResponderExcluirPutz. Funciona mesmo. Testado no Excel 2010.
ResponderExcluirnão deu certo, deu um erro de Compilação: End if sem bloco if
ResponderExcluirEstava copiando e colando e não dava certo, fui ate outra pagina e copiei o arquivo, agora sim deu certo, valew:
ResponderExcluirSub DesprotegerPlanilhaAtiva()
Dim i, i1, i2, i3, i4, i5, i6 As Integer, j As Integer, k As Integer, l As Integer , m As Integer, n As Integer
On Error Resume Next
For i = 65 To 66
For j = 65 To 66
For k = 65 To 66
For l = 65 To 66
For m = 65 To 66
For i1 = 65 To 66
For i2 = 65 To 66
For i3 = 65 To 66
For i4 = 65 To 66
For i5 = 65 To 66
For i6 = 65 To 66
For n = 32 To 126
ActiveSheet.Unprotect Chr(i) & Chr(j) & Chr(k) & Chr(l) & Chr(m) & Chr (i1) & Chr(i2) & Chr(i3) & Chr(i4) & Chr(i5) & Chr(i6) & Chr(n)
If ActiveSheet.ProtectContents = False Then
MsgBox "Planilha desprotegida com sucesso!!!"
Exit Sub
End If
Next
Next
Next
Next
Next
Next
Next
Next
Next
Next
Next
Next
End Sub