Notifications
Clear all

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

21 Posts
2 Usuários
0 Reactions
4,138 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
 

Chara,

Achei muito bacana esse exemplo, mas estava pensando uma msgbox aparecendo durante a execução da macro e em seguida fechando e abrindo uma nova informando que a tarefa foi finalizada...

Vc acha que existe essa possibilidade?!

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

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

Boa tarde!!

Isso já foi mostrado em postagens anteriores, tente adaptar.

No mais leia....
http://www.expresstraining.com.br/index ... cle&id=638
http://www.tomasvasquez.com.br/blog/mic ... com-msgbox

Att

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

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

Alexandre,

Na verdade eu estava em mente era algo mais complexo (ou não).

Colocar uma mensagem (Aguarde! Os dados estão sendo atualizado.) enquanto a macro (desbloq->atualiza->bloq) estivesse sendo executada. Assim que a macro finalizar, essa mensagem era fechada automaticamente e em seguida era exibida a mensagem: "Os dados foram atualizados com sucesso!".

Não sei se tem como fazer isso...

Obrigado!!!

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

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

Boa tarde!!!
Tente assim...

Sub proProcedimentoLongo() 
Sheets("Espera").V
    Sheets("Espera").Select 
    Application.Cursor = xlWait 
Application.ScreenUpdating=False
    Aqui está o longo procedimento
    Sheets("Espera").Visible=False 
Application.Cursor = xlDefault 
Application.ScreenUpdating=True
End Sub

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

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

Alexandre,

Sinceramente, não sei como fazer o processo acima...

Atualmente a macro está assim:

Option Explicit

Sub Bloqueio_atualizar()
     Application.ScreenUpdating = False
    Dim wSheet          As Worksheet
    Dim Pwd             As String
     
    Pwd = "BHNET"
    For Each wSheet In Worksheets
        wSheet.Protect Password:=Pwd
    Next wSheet
     Application.ScreenUpdating = True
End Sub
Sub Desbloqueio_atualizar()
     Application.ScreenUpdating = False
    Dim wSheet          As Worksheet
    Dim Pwd             As String
     
    Pwd = "BHNET"
    On Error Resume Next
    For Each wSheet In Worksheets
        wSheet.Unprotect Password:=Pwd
    Next wSheet
    Application.ScreenUpdating = True
End Sub




Sub ATUALIZAR()

  Call Desbloqueio_atualizar
  ActiveWorkbook.RefreshAll
  Calculate
  Call Bloqueio_atualizar
End Sub

Agora não sei como combinar as duas situações.

Pode me ajudar...

Abraços!

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

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

Pessoal,

Consegui solucionar por aqui.

Obrigado a todos pela ajuda!!!

Sub ATUALIZAR1()

  Sheets("Updating").Select
  Call Desbloqueio_atualizar
  ActiveWorkbook.RefreshAll
  Calculate
  Call Bloqueio_atualizar
End Sub
Sub Bloqueio_atualizar()
     Application.ScreenUpdating = False
    Dim wSheet          As Worksheet
    Dim Pwd             As String
     
    Pwd = "BHNET"
    For Each wSheet In Worksheets
        wSheet.Protect Password:=Pwd
    Next wSheet
     Application.ScreenUpdating = True
End Sub
Sub Desbloqueio_atualizar()
     Application.ScreenUpdating = False
    Dim wSheet          As Worksheet
    Dim Pwd             As String
     
    Pwd = "BHNET"
    On Error Resume Next
    For Each wSheet In Worksheets
        wSheet.Unprotect Password:=Pwd
    Next wSheet
    Application.ScreenUpdating = True
    MsgBox "Dados atualizados com sucesso!" & Chr$(13) & "" & Chr$(13) & "ATENÇÃO" & Chr$(13) & "Você será redirecionado para a página inicial." & Chr$(13), vbAlert, "GeoVisão - NET BH"
    Sheets("FRONT").Select
End Sub

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

 
Postado : 16/11/2012 7:33 am
Página 2 / 2