Надеюсь будет интересно кому нибудь, значит копался я в интернете и наткнулся на таймер, классная штука подумал я и решил поделиться этой радостью здесь)))
цитирую автора kvakak:
Видимо актуальность данного вопроса уже пропала, но, на всякий случай, приведу работающий код "самодельного" APIшного таймера. Проверял на WindowsXP/OfficeXP. (И до сих пор удивляюсь. что подобный "примитив" сработал.)
Итого: открываем Word/Excel, Alt-F11, вставляем модуль, а него такой код:
Public elpTm As Long
Public tmrID As Long
Public Declare Function SetTimer Lib "user32" (ByVal hwnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As Long) As Long
Public Declare Function KillTimer Lib "user32" (ByVal hwnd As Long, ByVal nIDEvent As Long) As Long
Sub main()
tmrID = SetTimer(&H0, &H0, 1000, AddressOf tmrPrc)
End Sub
'Этопришлось вынести в отдельную процедуру,
'т.к. таймер не желал "убиваться" в таймерной процедуре tmrPrc
Sub tmrKill()
KillTimer &H0, tmrID
End Sub
'Это обработчик таймера - "таймерная" процедура..
Public Sub tmrPrc(ByVal hwnd As Long, ByVal uMsg As Long, ByVal idEvent As Long, ByVal dwTimer As Long)
'(Примеры для Word закоментирован)
elpTm = elpTm + 1
'===============Для Word'а
'With Selection
' .InsertAfter Str(elpTm)
' .Collapse Direction:=wdCollapseEnd
'End With
'================Для Excel'а
ActiveCell.Value = elpTm
ActiveCell.Offset(1, 0).Select
If elpTm > 10 Then tmrKill
End Sub
'Запускать надо main.
цитирую автора kvakak:
Видимо актуальность данного вопроса уже пропала, но, на всякий случай, приведу работающий код "самодельного" APIшного таймера. Проверял на WindowsXP/OfficeXP. (И до сих пор удивляюсь. что подобный "примитив" сработал.)
Итого: открываем Word/Excel, Alt-F11, вставляем модуль, а него такой код:
Public elpTm As Long
Public tmrID As Long
Public Declare Function SetTimer Lib "user32" (ByVal hwnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As Long) As Long
Public Declare Function KillTimer Lib "user32" (ByVal hwnd As Long, ByVal nIDEvent As Long) As Long
Sub main()
tmrID = SetTimer(&H0, &H0, 1000, AddressOf tmrPrc)
End Sub
'Этопришлось вынести в отдельную процедуру,
'т.к. таймер не желал "убиваться" в таймерной процедуре tmrPrc
Sub tmrKill()
KillTimer &H0, tmrID
End Sub
'Это обработчик таймера - "таймерная" процедура..
Public Sub tmrPrc(ByVal hwnd As Long, ByVal uMsg As Long, ByVal idEvent As Long, ByVal dwTimer As Long)
'(Примеры для Word закоментирован)
elpTm = elpTm + 1
'===============Для Word'а
'With Selection
' .InsertAfter Str(elpTm)
' .Collapse Direction:=wdCollapseEnd
'End With
'================Для Excel'а
ActiveCell.Value = elpTm
ActiveCell.Offset(1, 0).Select
If elpTm > 10 Then tmrKill
End Sub
'Запускать надо main.