Запуск макроса VBA по таймеру

В 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

Источник: http://www.ka-net.org/office/of12.html

Комментарии

Отправить комментарий

Содержание этого поля является приватным и не предназначено к показу.
CAPTCHA
Подтвердите, пожалуйста, что вы - человек:
  ____    ____        _   _  _     _       _   _ 
/ ___| / ___| __| | | || | | | | \ | |
\___ \ \___ \ / _` | | || |_ | | | \| |
___) | ___) | | (_| | |__ _| | |___ | |\ |
|____/ |____/ \__,_| |_| |_____| |_| \_|
Введите код, изображенный в стиле ASCII-арт.

Не получается применить макрос? Не удаётся изменить код под свои нужды?

Оформите заказ у нас на сайте, не забыв прикрепить примеры файлов, и описать, что и как должно работать.