В Excel есть инструментарий для запуска макроса по расписанию, - Application.Ontime
При помощи этого метода можно запускать макрос с заданным интервалом (например, раз в секунду)
Но есть и другой вариант, - использование объекта htmlfile:
(код надо поместить в модуль ЭтаКнига - ThisWorkbook)
Private m_TimerId As Variant
Private m_doc As Object
Const ATTRNAME = "VBATimerHandler"
Private Sub StartTimer()
Const Script = "document.documentElement.getAttribute('" & ATTRNAME & "').TimerProc()"
EndTimer
Set m_doc = CreateObject("htmlfile")
m_doc.DocumentElement.setAttribute ATTRNAME, Me
m_TimerId = m_doc.parentWindow.setInterval(Script, 50) ' интервал 50 миллисекунд
End Sub
Private Sub EndTimer()
If m_doc Is Nothing Then Exit Sub
If Not IsEmpty(m_TimerId) Then
m_doc.parentWindow.clearInterval m_TimerId
m_TimerId = Empty
End If
m_doc.DocumentElement.removeAttribute ATTRNAME
Set m_doc = Nothing
End Sub
Public Sub TimerProc()
' этот макрос будет запускаться 20 раз в секунду
Debug.Print Now()
End Sub