A solução de Yuval pode ser suficiente, mas somente se as mudanças estiverem limitadas ao conteúdo das células. O Inquirer não indicou se esse é o caso. Não obstante: e se a alteração que você deseja pegar for a adição de (talvez até mesmo a remoção de) planilhas na pasta de trabalho?
Tipo de solução frágil e nojenta: armazene uma macro em seu PERSONAL.XLS oculto (B) para executar uma pasta de trabalho periódica (reescalonando-se) fechar e reabrir. PERSONAL.XLS (B) deve ser encontrado em
% USERPROFILE% \ AppData \ Roaming \ Microsoft \ Excel \ XLSTART \)
Sub wkbRefresher()
Dim refreshedWorkbook As Workbook
Dim WkBks As Workbooks
'full filepath
fPath = "c:\tmp\mutatingWorkbook.xls"
'in HH:MM:SS format:
refreshInterval = "00:05:00"
For i = 1 To Application.Workbooks.Count
Debug.Print (Application.Workbooks.Item(i).FullName)
If LCase(Application.Workbooks.Item(i).FullName) = LCase(fPath) Then
Debug.Print (" Yep thats the one! Lets refresh it.")
Application.Workbooks.Item(i).Close
'refreshedWorkbook = WkBks.Open(fPath, True, True)
Set refreshedWorkbook = Excel.Application.Workbooks.Open(fPath, True, True)
End If
Next i
' Use at your own risk: this is an "asynchronous", the execution cannot be stopped by merely pressing the stop button in the VBA interface.
' You might have to do something like put a break marker on the line OnTime line so that next time around, it doesn't respawn itself.
Application.OnTime Now + TimeValue(refreshInterval), "wkbRefresher"
End Sub
É claro que o sub-item acima pode ser parametrizado e / ou você pode anexá-lo a um botão da barra de ferramentas personalizada ou algo assim. Como a pasta de trabalho salva a planilha ativa, a célula ativa, etc., informações de estado, você também pode querer incluir algumas linhas para salvar seu nome de planilha ativo preferido e reativá-lo a cada vez que for reaberto.
Referências:
link
link
Embora eu não tenha examinado tudo, esta parece ser uma introdução muito útil se você não ouviu falar de PERSONAL.XLS (B): link