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.