Amigos leitores, sejam bem vindos mais uma vez ao meu blog.
Quantas e quantas vezes perdemos tudo o que estávamos fazendo por conta de uma queda de energia ou bugs no computador. Isso é uma coisa realmente muito chata – pra não dizer algo pior, que, por sinal, é o que certamente exclamamos nestes momentos!!!
Em meus estudos, descobri um código muito interessante para programarmos osalvamento automático real, com uma certa frequência a ser definida por nós mesmos. Diferentemente do autosalvamento do excel, esta macro salva o próprio arquivo de modo real, como se nós mesmos o tivéssemos feito clicando no botão “Salvar”.
O fundamento desta macro é salvar o arquivo a cada X minutos caso o arquivo tenha sofrido modificações e ainda não tenha sido salvo. Esta macro é iniciada ao abrirmos o arquivo, no evento Workbook_Open da pasta de trabalho. Vou mostrar como criá-la.
Abra o Projeto do VBA (Alt+F11) e insira um módulo digitando o seguinte código:
Public RunWhen As Double
Public Const cRunIntervalSeconds = 600 '10 minutos
Public Const cRunWhat = "SalvamentoProgramado" 'nome do procedimento a ser executado
Sub StartTimer()
RunWhen = Now + TimeSerial(0, 0, cRunIntervalSeconds)
Application.OnTime EarliestTime:=RunWhen, Procedure:=cRunWhat, _
Schedule:=True
End Sub
Sub SalvamentoProgramado()
If Application.ThisWorkbook.Saved = False Then
Application.ThisWorkbook.Save
End If
StartTimer ' Reschedule the procedure
End Sub
Sub StopTimer()
On Error Resume Next
Application.OnTime EarliestTime:=RunWhen, Procedure:=cRunWhat, _
Schedule:=False
End Sub
A constante cRunIntervalSeconds define o tempo, em segundos, para o Cronômetro executar.
O procedimento StartTimer inicia o cronômetro da programação do salvamento. Na sub SalvamentoProgramado é verificado se houve alterações no arquivo e se ele está salvo, então, ele salvará as modificações no arquivo. StopTimer encerrará a programação da macro. Poderá ser chamada no menu macros mesmo, ou então criar um atalho para ela.
Agora, abra o código da pasta de trabalho, dando um duplo clique em EstaPasta_de_trabalho e digite o código:
Private Sub Workbook_Open()
Call StartTimer
End Sub
Prontinho. Salve o arquivo. Feche. E abra novamente. A partir de então ele salvará suas alterações no intervalo de tempo estipulado. E adeus aos trabalhos perdidos.
Um abraço.



Valeu cara…eu estava precisando de um macro destes e funcionou !!!
Reply
exceldoseujeito Reply:
maio 14th, 2009 at 16:04
Beleza!!!
Muito gratificante isso.
Visite mais vezes.
Abraço
Reply
Olá..
dica muito bacana…mas acho que estou fazendo alguma coisa errada.. não está dando certo…
alguém poderia me dar uma força?
Abraços
Reply
exceldoseujeito Reply:
junho 3rd, 2009 at 10:52
Que problema está ocorrendo?
Reply
Tentei fazer no Excel 2007, e até parece que quer funcionar.
O problema é que aparece a seguinte mensagem em uma janela:
Aviso de privacidade: este documento contém macros, controle ActiveX, informações do pacote de expansao para XML ou componentes da Web. É possível que esses itens contenham informações pessoais que não possam ser removidas pelo Inspetor de Documento.
Fui nas opções das configurações de Macro e ActiveX (Habilitei os recursos) mais a mensagem ainda acontece.
Preciso que a mensagem não apareça.
Minha intenção é gerar uma página web dos dados de forma automática. Mais ele só atualiza a página, se o arquivo for salvo. Assim a pagina fica atualizada sempre.
Agradeço se puder me ajudar !!!!
Reply
Bom diaaa !!!
Encontrei uma solução aqui
Private Sub Worksheet_Change(ByVal Target As Range)
ThisWorkbook.Save
End Sub
Colocando na pasta só essa macro já funciona no momento em que a planilha receber qualquer alteração.
Flw
obrigado
Reply
exceldoseujeito Reply:
julho 17th, 2009 at 17:33
Ok.
Abraço
Reply
Ola, muito boa essas dicas.
Fiz todos os procedimentos acima de colar no modulo o codigo do primeiro bloco.
mais o segundo bloco não entendi onde colocar o codigo abaixo.
Private Sub Workbook_Open()
Call StartTimer
End Sub
—————-
outra pergunta caro amigo Ederson, esse seu codigo funciona sem os codigos acima, simplesmente colar num modulo e pronto?
Obrigado se puder responder
Reply
exceldoseujeito Reply:
agosto 5th, 2009 at 0:09
Primeiro lugar, obrigado.
Quanto ao bloco do código Workbook_Open, ele deve ser colocado no módulo da Pasta de trabalho (o próprio arquivo Excel)… Na lista dos objetos do projeto, onde tem os módulos, formulários, planilhas,… também tem um item chamado EstaPastaDeTrabalho.
Dê dois clique sobre este item e será exibida uma janela de código como a do módulo. Então insira este código ali.
Agora, sobre o coment do Ederson, é uma outra maneira de fazer, porém, gera muita lentidão no sistema, pois a macro será repetida a cada alteração nas células, diferente da macro deste artigo que é realizada a cada 10 minutos.
Espero que tenha ficado explicado.
Abraço
Reply
Prezado,
Há a possibilidade de rodar essa macro com o tempo e 60 segundos e em uma planilha compartilhada?
Reply
Reinaldo Coral Reply:
outubro 17th, 2009 at 13:47
Na planilha compartilhada há a restrição de salvamento.
Apenas o primeiro usuário na fila de acesso terá o privilégio para salvá-la.
Abraço.
Reply