Notifications
Clear all

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

21 Posts
2 Usuários
0 Reactions
4,148 Visualizações
Fernando Fernandes
(@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!!!

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 13/11/2012 8:55 am
Fernando Fernandes
(@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

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 13/11/2012 9:10 am
hronconi
(@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

Henrique
http://henriqueronconi.wix.com/consultoria

Espero ter ajudado! ;)

 
Postado : 13/11/2012 9:11 am
Fernando Fernandes
(@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!!!

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 13/11/2012 9:22 am
Fernando Fernandes
(@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

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 13/11/2012 9:50 am
Fernando Fernandes
(@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!!!

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

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

Boa noite!!

Reveja sua senha

Senha = "NETBH"
Senha = "BHNET"

Att

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 13/11/2012 12:59 pm
Fernando Fernandes
(@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!

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 13/11/2012 1:17 pm
Fernando Fernandes
(@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

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 13/11/2012 1:20 pm
Fernando Fernandes
(@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.

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 13/11/2012 3:04 pm
Fernando Fernandes
(@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

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 14/11/2012 7:06 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Segue uma contribuição

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 14/11/2012 8:08 am
Fernando Fernandes
(@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

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 14/11/2012 8:14 am
Fernando Fernandes
(@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!!!

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 14/11/2012 8:31 am
Fernando Fernandes
(@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

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

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