Notifications
Clear all

Planilha protegida não permite atualização de tabela dinâmic

21 Posts
2 Usuários
0 Reactions
4,126 Visualizações
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Estou precisando de uma super ajuda.

Utilizo uma macro para proteger e desproteger um arquivo com uma série de planilhas.

Para desproteger

Sub KEY()
    Dim Planilha As Worksheet
    Dim Senha As String
    
    Senha = InputBox("ATENÇÃO!" & Chr$(13) & "Você está acessando o módulo de segurança da Ferramenta Geo Visão." & Chr$(13) & "Digite a sua senha:", "MÓDULO DE SEGURANÇA - GeoVisão")
    For Each Planilha In Worksheets
        Planilha.Unprotect Senha
    Next
End Sub

Para proteger

Sub Proteger()
    Dim Planilha As Worksheet
    Dim Senha As String
    
    Senha = InputBox("Digite a Senha:", "Senha de Proteção")
    For Each Planilha In Worksheets
        Planilha.Protect Senha
    Next
End Sub

Mas preciso atualizar todas as planilhas frequentemente, e com isso uso a macro:

Sub ATUALIZAR()

    ActiveWorkbook.RefreshAll
    Calculate
    MsgBox "Dados atualizados com sucesso!", vbAlert, "GeoVisão - NET BH"

End Sub

Mas com as planilhas bloqueadas as tabelas dinâmicas não são atualizadas.

O que acha posso fazer para resolver.

Obrigado!!!

 
Postado : 13/11/2012 8:55 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Bom dia!!

Use nossa base de dados. e caso necessário poste um arquivo modelo compactado!
viewtopic.php?f=16&t=2569&p=11263&hilit=desproteger+planilha#p11263

Porque não chama a rotina para desproteger a guia antes do código "ATUALIZAR" e depois chame a "Proteger" no final da rotina atualizar.

Att

 
Postado : 13/11/2012 9:10 am
(@hronconi)
Posts: 314
Reputable Member
 

Mafilho,

Coloque uma instrução para desproteger a planilha antes de atualizar e uma instrução para proteger depois.

Abraço,

Henrique Ronconi

 
Postado : 13/11/2012 9:11 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

É verdade... Não tinha pensado nesta opção.
Mas tem um problema, que pode até parecer bobo. A macro que utilizo para desproteger percorre todas as abas (mostrando aba a aba).

Vcs sabem uma opção que congele na aba que a macro foi acionada.

E se não for pedir muito, existe uma opção de colocar uma mensagem solicitando que o usuário aguarde enquanto os dados são atualizados e em seguida apresente outra mensagem informando que os dados foram atualizados com sucesso!!!

Muito Obrigado!!!

 
Postado : 13/11/2012 9:22 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Boa tarde!!
Agora faça a adaptação.

Sub SuasMacros()
Application.ScreenUpdating = False
'Aqui sua macro
MsgBox "Por favor, aguarde..."
Application.ScreenUpdating = True
End Sub
 
Postado : 13/11/2012 9:50 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Fiz ela divida em três parte, mas não sei se é a mais fácil ou melhor:

1º - Macro para desbloqueio, que manda o comando iniciar a de atualização:

Sub Desbloqueio_atualizar()
Application.ScreenUpdating = False
    Dim Planilha As Worksheet
    Dim Senha As String
    Senha = "NETBH"
    For Each Planilha In Worksheets
        Planilha.Unprotect Senha
    Next
Application.ScreenUpdating = True
Application.Run "ATUALIZAR()"

2º - Depois de desbloqueadas as palnilhas e executada a macro de atualização é iniciada a de bloqueio:

End Sub
Sub ATUALIZAR()

    ActiveWorkbook.RefreshAll
    Calculate
Application.Run "Bloqueio_atualizar()"

3º - Por ultimo o bloqueio:

End Sub
Sub Bloqueio_atualizar()
  Dim Planilha As Worksheet
    Dim Senha As String
    
    Senha = "BHNET"
    For Each Planilha In Worksheets
        Planilha.Protect Senha
    Next
MsgBox "Dados atualizados com sucesso!", vbAlert, "GeoVisão - NET BH"

End Sub

Mas está apresentando erro na senha.´

Outra coisa, existe a possibilidade de se colocar uma mensagem enquanto a macro é executada e assim que terminar fechar e aparecer outra.

Exemplo:

Enquanto é executada a macro de atualização é exibida a mensagem: Aguarde enquanto os dados são atualizados!
Quando a macro terminar essa mensagem é fechada e é exibida outra: Dados atualizados com sucesso!

Obrigado!!!

 
Postado : 13/11/2012 11:04 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Boa noite!!

Reveja sua senha

Senha = "NETBH"
Senha = "BHNET"

Att

 
Postado : 13/11/2012 12:59 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Não está dando muito certo...

Agora a planilha desbloqueia... atualiza e não bloqueia de novo...

Existe alguma possibilidade de se fazer um unico código de:

Desbloqueio->Atualização->Bloqueio

Obrigado!

 
Postado : 13/11/2012 1:17 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Boa tarde!!!

Se desde sua 1º postagem tivesse postado seu arquivo modelo compactado, o pessoal da comunidade talvez já teria resolvido.

Att

 
Postado : 13/11/2012 1:20 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Boa tarde!!!

Se desde sua 1º postagem tivesse postado seu arquivo modelo compactado, o pessoal da comunidade talvez já teria resolvido.

Att

Oi,

Na verdade deparo com um problema: o arquivo é confidencial da empresa que trabalho... mas o que realmente preciso é o que eu postei desde o inicio...

Preciso de ajuda para fazer uma macro que desbloqueia todas as abas, depois atualiza tudo e em seguida bloqueia tudo novamente.

 
Postado : 13/11/2012 3:04 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Bom dia!!!

Eu disso claramente "arquivo modelo"
Tente usar esse para ver se vai dar certo.

Option Explicit
 
Sub ProtegerAleVBA()
     
    Dim wSheet          As Worksheet
    Dim Pwd             As String
     
    Pwd = "AleVBA"
    For Each wSheet In Worksheets
        wSheet.Protect Password:=Pwd
    Next wSheet
     
End Sub

Sub DesprotegerAleVBA()
     
    Dim wSheet          As Worksheet
    Dim Pwd             As String
     
    Pwd = "AleVBA"
    On Error Resume Next
    For Each wSheet In Worksheets
        wSheet.Unprotect Password:=Pwd
    Next wSheet
End Sub
 
Postado : 14/11/2012 7:06 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Segue uma contribuição

 
Postado : 14/11/2012 8:08 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Bom dia!!

Veja se é isso...
http://www.sendspace.com/file/01i5be

Lembrando que você disse bloquear TODAS as guias.

E por favor leia as regras, os arquivos devem ser compactados!!!
Att

 
Postado : 14/11/2012 8:14 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Pessoal,

Agora deu certinho!

Peço desculpas, acabei me esquecendo de compactar o arquivo.

Agora ficou uma questão. Existe a possibilidade de se colocar uma mensagem informando que os dados estão sendo atualizados enquanto a macro é executada e assim que finalizada esta mensagem é fechada e se abre uma nova informando que os dados foram atualizados com sucesso?

Obrigado mais uma vez!!!

 
Postado : 14/11/2012 8:31 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

mafilho, veja este exemplo, é só adaptar :

Use the Status Bar as a Progress Indicator
http://www.vbaexpress.com/kb/getarticle.php?kb_id=87

[]s

 
Postado : 14/11/2012 8:39 am
Página 1 / 2