이 페이지에서
구문
Set_Routine 명령문, [초], [분], [종료시간], [종료날짜], [종료명령문]
인수구분
형식 설명
명령문
필수
String
매초 또는 매분 마다 반복할 명령문입니다. 반드시 텍스트로 입력해야 합니다.
인수가 필요한 명령문일 경우 "명령문 인수1, 인수2, ..." 형태의 텍스트로 입력합니다.
초
선택
Long
명령문을 반복할 초 단위입니다. 기본값은 5 입니다.
분
선택
Long
명령문을 반복할 분 단위입니다. 기본값은 0 입니다.
종료시간
선택
String
명령문 반복을 종료할 시간입니다. "hh:mm:ss" 형태의 텍스트로 입력합니다.
종료날짜
선택
String
명령문 반복을 종료할 날짜입니다. "yyyy-mm-dd" 형태의 텍스트로 입력합니다.
종료 시간을 입력하면 반드시 같이 입력되어야 합니다.
종료명령문
선택
String
종료시간이 되어 명령문 반복이 종료될 때 실행할 명령문입니다. 텍스트로 입력합니다.
마스터 코드
복사한 코드는 VBA 편집기(Alt + F11) 새 모듈에 붙여넣어 사용하세요'----------------------------
'아래 명령문을 새로운 모듈 안에 붙여넣기 후 사용합니다.
'----------------------------
Option Explicit
Public blnRepeat As Boolean
Public TimeToRun As Double
Dim tmpDate As String
Sub Set_Routine(CodeToRun As String, Optional s As Long = 5, Optional m As Long = 0, Optional UntilTime As String, Optional UntilDate As String, Optional CodeToStop As String)
'###############################################################
'오빠두엑셀 VBA 사용자지정함수 (https://www.oppadu.com)
'▶ Set_Routine 함수
'▶ 배열을 범위 위로 반환합니다.
'▶ 인수 설명
'_____________CodeToRun : 반복 실행할 명령문입니다. 인수가 있을 경우, 명령문(인수) 형태로 입력합니다. 텍스트로만 입력 가능합니다.
'_____________s : 명령문을 반복할 초 단위입니다. 기본값은 5 입니다.
'_____________m : 명령문을 반복할 분 단위 입니다. 기본값은 0 입니다.
'_____________UntilTime : 명령문의 반복을 종료할 시간입니다. UntilTime이 입력되면 UntilDate도 반드시 입력되어야 합니다.
'_____________UntilDate : 명령문의 반복을 종료할 날짜입니다. UntilDate이 입력되면 UntilTime도 반드시 입력되어야 합니다.
'_____________CodeToStop : 명령문의 반복을 종료하면서 실행할 명령문입니다.
'▶ 사용 예제
'Start_Scheduler "Test"
'Stop_Scheduler "Test"
'##############################################################
If UntilTime <> "" And UntilDate <> "" Then
If DateValue(CStr(UntilDate)) + TimeValue(UntilTime) <= Now Then
Stop_Routine CodeToRun, s, m, UntilTime, UntilDate, CodeToStop
If CodeToStop <> "" Then Application.Run CodeToStop
Exit Sub
End If
End If
If blnRepeat = False Then Application.Run CodeToRun: blnRepeat = True
TimeToRun = Now + TimeSerial(0, m, s)
Application.OnTime TimeToRun, "'ScheduleWork """ & CodeToRun & """," & s & "," & m & ",""" & UntilTime & """,""" & UntilDate & """,""" & CodeToStop & """'"
blnRepeat = True
End Sub
Sub Stop_Routine(CodeToRun As String, Optional s As Long = 5, Optional m As Long = 0, Optional UntilTime As String, Optional UntilDate As String, Optional CodeToStop As String)
On Error Resume Next
blnRepeat = False
Application.OnTime TimeToRun, "'ScheduleWork """ & CodeToRun & """," & s & "," & m & ",""" & UntilTime & """,""" & UntilDate & """,""" & CodeToStop & """'", , False
End Sub
Sub ScheduleWork(CodeToRun As String, s As Long, m As Long, UntilTime As String, UntilDate As String, CodeToStop As String)
Application.Run CodeToRun
Call Set_Routine(CodeToRun, s, m, UntilTime, UntilDate, CodeToStop)
End Sub
활용 예제
카카오톡 문자보내기 명령문을 10분마다 반복 실행하기
'10분마다 반복 실행
Set_Routine "Send_Kakao", 0, 10
'반복 실행중인 명령문 종료
Stop_Routine "Send_Kakao", 0, 10
네이버 크롤링 명령문을 10초마다 반복실행하고 같은날 오후 10시에 종료하기
'크롤링 명령문을 10초마다 반복실행 후 오후 10시에 종료
Set_Routine "Naver_Crawl", 10, 0, "22:00:00", cStr(Date)
안내사항
명령문 전체를 새로운 모듈에 붙여넣은 뒤 사용합니다.
반복 실행 중에도 다른 명령문을 동시에 실행할 수 있지만, 엑셀을 종료하면 반복중이던 명령문도 함께 종료됩니다.
반복을 강제로 종료하려면 Stop_Routine 에 Set_Routine 과 동일한 인수를 입력해 실행합니다.
댓글 1
로그인 후 댓글을 작성할 수 있습니다.
강민준🤗
2024.08.11 13:06
좋은 자료 감사합니다.🙇♂️