Excel에서 주기적으로 실행되는 매크로를 만드는 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/211715

  •  03-07-2019
  •  | 
  •  

문제

한 사람은 일부 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 분에 내 모든 및 매일 무인보고 기능을 사용합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top