Решение Ювала может быть достаточным, но только если изменения ограничены содержимым ячейки. Опросчик не указал, так ли это. Тем не менее: что если изменение, которое вы хотите получить, это добавление (возможно, даже удаление) рабочих листов в рабочую книгу?
Вид хрупкого и грубого решения: сохраните макрос в скрытом файле PERSONAL.XLS(B), чтобы выполнить периодическое (путем перепланирования самого себя) закрытие и повторное открытие книги. PERSONAL.XLS(B) должен быть найден по адресу% 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
Конечно, вышеприведенный подпункт может быть параметризован и / или вы можете прикрепить его к пользовательской кнопке на панели инструментов или к чему-то еще. Поскольку при сохранении рабочей книги сохраняется информация о состоянии активного листа, активной ячейки и т.д., Вы также можете добавить несколько строк, чтобы сохранить предпочитаемое имя активного листа и повторно активировать его каждый раз после повторного открытия.
Рекомендации:
http://office.microsoft.com/en-us/excel-help/run-a-macro-HP010342865.aspx http://msdn.microsoft.com/en-us/library/office/ff196165(v=office +0,14).aspx
Хотя я не проверял все это, это, кажется, очень полезное введение, если вы не слышали о PERSONAL.XLS(B): http://www.rondebruin.nl/win/personal.htm