Excel에서 주기적으로 실행되는 매크로를 만드는 방법은 무엇입니까?
문제
한 사람은 일부 VBA 코드를 주기적으로 어떻게 실행하고 완전히 자동화합니까?
해결책
Application.ontime을 사용하여 주기적으로 매크로를 예약 할 수 있습니다. 예를 들어 아래 코드와 함께 모듈을 만듭니다. 타이머 실행을 시작하려면 "활성화"를 호출하십시오.
통합 문서를 닫을 때 타이머 실행을 중지하는 것이 중요합니다.
Option Explicit
Private m_dtNextTime As Date
Private m_dtInterval As Date
Public Sub Enable(Interval As Date)
Disable
m_dtInterval = Interval
StartTimer
End Sub
Private Sub StartTimer()
m_dtNextTime = Now + m_dtInterval
Application.OnTime m_dtNextTime, "MacroName"
End Sub
Public Sub MacroName()
On Error GoTo ErrHandler:
' ... do your stuff here
' Start timer again
StartTimer
Exit Sub
ErrHandler:
' Handle errors, restart timer if desired
End Sub
Public Sub Disable()
On Error Resume Next ' Ignore errors
Dim dtZero As Date
If m_dtNextTime <> dtZero Then
' Stop timer if it is running
Application.OnTime m_dtNextTime, "MacroName", , False
m_dtNextTime = dtZero
End If
m_dtInterval = dtZero
End Sub
또는 Win32 API Settimer/Killtimer 기능을 비슷한 방식으로 사용할 수 있습니다.
다른 팁
타이밍 이벤트에 사용할 수있는 응용 프로그램 방법이 있습니다. 이 경우 정기적으로 발생하려면 각 실행 후 타이머를 '다시로드'해야하지만 매우 간단해야합니다.
Sub MyTimer()
Application.Wait Now + TimeValue("00:00:05")
MsgBox ("5 seconds")
End Sub
-아담
Windows Task Scheduler 및 VBScript를 고려할 수 있습니다.
나는 항상 이것을한다. 나는 위와 같이 "ontime"메소드를 사용했지만 Excel이 100% 실행되기 때문에 다른 것들에 대해 쓸모없는 코드를 실행하는 컴퓨터를 렌더링한다. 대신 수정 된 숨겨진 통합 문서를 사용하고 Windows 작업 스케줄러로 실행하고 thisworkbook workbook_open 함수에서 개인 통합 문서에서 매크로를 호출하거나 코드가있는 다른 통합 문서를 열고 실행합니다. 코드가 실행되면 숨겨진 통합 문서에서 applicate.quit 함수를 호출하고 다음 실행을 위해 Ecxel을 닫을 수 있습니다. 나는 15 분에 내 모든 및 매일 무인보고 기능을 사용합니다.
제휴하지 않습니다 StackOverflow