okmacro

홈 › 활용 사례 › 중간에 실패해도 멈추지 않게

중간에 실패해도
멈추지 않게 만들기

100행짜리 매크로를 돌려 놓고 회의에 다녀왔는데 3행에서 멈춰 있는 경우가 있습니다. 실패한 것은 한 줄인데 남은 97줄은 손도 못 댄 상태입니다. 실패를 없앨 수는 없지만, 실패가 전체를 세우지 않게 만들 수는 있습니다. okmacro 에 있는 네 가지 장치를 순서대로 씁니다.

실패에는 두 종류가 있습니다

대응이 갈리므로 먼저 구분합니다.

종류예대응
흔들리는 실패
다시 하면 된다
창이 늦게 떠서 못 찾음, 이미지를 그 순간 놓침, 서버가 잠깐 느림 재시도 · 색 대기
굳은 실패
다시 해도 안 된다
사업자번호가 이미 등록됨, 값 형식이 맞지 않음, 권한이 없음 건너뛰고 계속 · 나중에 사람이 처리

흔들리는 실패를 건너뛰어 버리면 멀쩡히 들어갈 수 있던 줄을 버리게 되고, 굳은 실패를 재시도하면 같은 실패를 세 번 반복할 뿐입니다. 그래서 재시도를 먼저 걸고, 그래도 안 되면 건너뛰는 순서가 됩니다.

흔들리는 동작에는 재시도

동작 목록에서 그 줄을 우클릭하면 재시도 횟수 가 있습니다. 창 활성화 와 이미지 찾기 처럼 외부 사정에 흔들리는 동작에 2~3회를 줍니다.

다만 재시도보다 먼저 볼 것이 있습니다. 고정 지연을 쓰고 있지 않은지입니다. 지연 3초 는 빠른 날에 시간을 버리고 느린 날에는 어긋납니다. 색 대기 로 바꾸면 준비되는 즉시 넘어가므로 실패 자체가 줄어듭니다 (화면이 느려도 안 어긋나게).

창을 기다리는 것은 창 활성화 동작이 대신합니다. 창이 아직 없으면 지정한 초까지 기다리므로, 앞에 지연을 둘 필요가 없습니다.

뜰 때도 안 뜰 때도 있는 창은 조건으로

"확인하시겠습니까" 창이 어떤 줄에서만 뜨는 경우가 있습니다. 뜬다고 가정하고 Enter 를 넣어 두면 안 뜬 줄에서 그 Enter 가 엉뚱한 곳으로 갑니다. 안 뜬다고 가정하면 뜬 줄에서 전부 막힙니다.

이럴 때가 만약 ~이면 자리입니다. 화면 색 · 창 존재 · 이미지 세 가지로 판단해 블록 안을 실행하거나 건너뜁니다. 반대 조건 옵션을 켜면 "그 창이 없을 때" 로 뒤집을 수 있고, 조건이 아닐 때 할 일은 블록 안의 아니면(else) 에 넣습니다.

 7  만약 ~이면   창 존재: 확인
 8    마우스 클릭  창 기준 (120, 90)    예 버튼
 9  아니면
10    (아무것도 안 함)
11  만약 끝

이렇게 해 두면 그 창이 뜨든 안 뜨든 매크로는 같은 자리로 돌아옵니다. 실패를 처리하는 것이 아니라 실패가 될 상황을 미리 갈라 두는 방식이라 가장 튼튼합니다.

그래도 실패하면 건너뛰고 계속

매크로 설정의 오류 시 는 중단 과 건너뛰고 계속 둘 중 하나입니다. 여러 건을 처리하는 매크로는 건너뛰고 계속 으로 둡니다. 중단 이면 3행에서 걸렸을 때 나머지 97행이 통째로 남습니다.

건너뛴 동작은 개수와 내용이 로그에 남습니다. 조용히 사라지지 않습니다.

되돌릴 수 없는 일을 하는 매크로는 반대입니다. 삭제·전송·결재 상신처럼 한 번 나가면 끝인 동작이 들어 있으면 중단 으로 두고 사람이 보는 편이 안전합니다. "계속 도는 것"이 언제나 좋은 것은 아닙니다.

돌리는 중에 이상하면 Pause 한 번으로 매크로와 연타가 모두 멈춥니다. 잠깐만 세우려면 Ctrl+Alt+2 로 일시정지했다가 같은 키로 이어 갑니다.

끝난 뒤 실패한 것만 다시

건너뛰고 계속 돌았다면, 끝난 뒤에 무엇이 실패했는지 추려 내는 일이 남습니다. 이 부분이 손으로 하면 가장 지치는 자리입니다.

  • 표 실행 요약 — 12행 중 10 성공 / 2 실패 가 로그와 key_macro.log 에 남습니다.
  • 결과 CSV 저장(도구 메뉴) — 원본 열에 결과와 오류가 덧붙은 파일이 나옵니다. 엑셀에서 바로 열어 어느 줄이 왜 안 됐는지 봅니다.
  • 실패한 행만 다시 실행(도구 메뉴) — 고칠 것을 고친 뒤 이 기능을 씁니다. 표를 다시 만들거나 성공한 줄을 지워 낼 필요가 없습니다.
  • 실행 통계 — 결과와 소요 시간·동작 수가 로그에 남고 매크로 파일에도 기록됩니다.

표 반복이 아닌 매크로에서는 실패한 줄이 붉게 표시되고 자동으로 선택됩니다. 오류 창에도 몇 번째 동작에서 왜 실패했는지 나옵니다. 그 줄부터 다시 돌리고 싶으면 우클릭의 이 줄부터 실행 을 씁니다.

애초에 덜 실패하게

가장 값싼 대응은 돌리기 전에 거르는 것입니다.

툴바의 점검 은 없는 창, 빠진 이미지, 없는 매크로 호출, 순환 호출, 표 0행, {머리글} 오타, 블록 짝, 화면 밖 좌표를 실행 전에 알려 줍니다. 경고 줄을 두 번 누르면 그 동작으로 바로 갑니다.

모의 실행 은 실제 입력을 보내지 않고 로그만 남깁니다. 좌표와 조건이 맞는지, 어떤 값이 들어갈 예정이었는지를 아무 피해 없이 봅니다.

빗나가는 자리를 좁힐 때는 의심되는 줄을 Space 로 꺼 가며 확인합니다. 지우지 않고 잠시 끄는 것이라 다시 켜면 그대로 돌아옵니다. 동작 목록 아래 ▷ 테스트 는 반복 설정과 상관없이 한 바퀴만 돌려 봅니다.

매크로 파일은 저장할 때마다 이전 것이 이름.bak1~3.okm 으로 남습니다(bak1 이 최신). 고치다 망가뜨렸으면 파일 메뉴의 이전 저장으로 되돌리기 에서 시점을 골라 복구합니다. 매크로 편집 자체는 Ctrl+Z 로 50단계까지 되돌아갑니다.