엑셀 매크로 반복작업 실행 :: Set_Routine 명령문 사용법
엑셀 Set_Routine 명령문 목차 바로가기
요약
엑셀 Set_Routine 은 특정 매크로를 매초/매분마다 반복실행하는 명령문입니다.
명령문 구문
명령문 반복실행
Set_Routine 명령문, [초], [분], [종료시간], [종료날짜], [종료명령문]
'명령문을 매초/매분마다 반복실행합니다.
'명령문을 매초/매분마다 반복실행합니다.
명령문 반복실행 종료
Stop_Routine 명령문, [초], [분], [종료시간], [종료날짜], [종료명령문]
'매초/매분마다 반복실행중인 명령문을 종료합니다.
'매초/매분마다 반복실행중인 명령문을 종료합니다.
사용된 인수 및 변수 알아보기
인수 | 설명 |
명령문 [String] |
매초 또는 매분 마다 반복할 명령문입니다. 반드시 텍스트로 입력해야 합니다. 만약 인수가 필요한 명령문일 경우, "명령문 인수1, 인수2, ..." 형태의 텍스트로 입력합니다. |
초 [Long, 선택인수] |
명령문을 반복할 초 단위입니다. 기본값은 5 입니다. |
분 [Long, 선택인수] |
명령문을 반복할 분 단위입니다. 기본값은 0 입니다. |
종료시간 [String, 선택인수] |
명령문 반복을 종료할 시간입니다. "hh:mm:ss" 형태의 텍스트로 입력합니다. |
종료날짜 [String, 선택인수] |
명령문 반복을 종료할 날짜입니다. 종료 시간을 입력하면, 반드시 같이 입력되어야 합니다. "yyyy-mm-dd" 형태의 텍스트로 입력합니다. |
종료명령문 [String, 선택인수] |
종료시간이 되어 명령문 반복이 종료될 때 실행할 명령문입니다. 텍스트로 입력합니다. |
예제파일 다운로드
오빠두엑셀의 강의 예제파일은 여러분을 위해 자유롭게 제공하고 있습니다.
- [엑셀VBA함수] Set_Routine 명령문예제파일
상세 설명
엑셀 Set_Routine 명령문은 특정 매크로 명령문을 매초/매분마다 반복실행하는 명령문입니다. 매 10초마다 인터넷 데이터를 크롤링하거나, 매 3분마다 안내메시지를 출력하는 등 다양한 반복작업에 활용할 수 있습니다.
반복할 시간과 반복할 날짜를 지정하면 특정 명령문을 지정한 시간까지 반복해서 실행할 수 있습니다. 또한 반복이 종료되면서 실행할 명령문도 같이 지정할 수 있습니다.
Set_Routine 명령문은 실행중인 엑셀의 백그라운드에서 실행되므로, 명령문을 반복 실행하면서 다른 명령문을 동시에 실행할 수 있습니다. 하지만 엑셀을 종료하면 반복중이던 명령문은 자동으로 종료됩니다.
Stop_Routine 명령문으로 반복실행중인 명령문을 강제로 종료하려면, Set_Routine 으로 입력했던 인수와 동일한 인수를 입력해야 합니다.
본 명령문은 Application.Ontime 함수를 사용합니다. Application.Ontime 함수에 대한 자세한 설명은 MS 홈페이지 관련 링크를 참고하세요.
실전 사용 예제
- 카카오톡 문자보내기 명령문을 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)
엑셀 매크로 반복작업 실행, Start_Routine 명령문 동작원리
Start_Routine 명령문 전체 코드
'---------------------------- '아래 명령문을 새로운 모듈 안에 붙여넣기 후 사용합니다. '---------------------------- 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분마다 반복 실행하기