강동민
한빛테크의 한 달
AutoHotkey v1.1 업무자동화 실습 가이드

엑셀과 ERP 사이에서 새는 시간을 한 달 동안 되찾는 이야기

직원 280명인 한빛테크에서 다섯 명의 담당자가 10월과 11월에 겪는 일을 날짜 순서대로 따라갑니다. 무엇이 들어오고, 무엇이 번거롭고, 어디서 실수가 나는지 그들의 머릿속을 따라가다 보면, 작은 스크립트 하나가 그 일을 어떻게 바꾸는지 자연스럽게 보입니다.

설치부터 실습 자료, 실제로 돌아가는 코드까지 모두 들어 있습니다. 코드를 몰라도 버튼을 눌러 가며 끝까지 따라올 수 있습니다.

프롤로그 · 9월 말

같은 칸을 수십 번 채우는 사람들

한빛테크는 기업용 IT 장비와 솔루션을 파는 회사입니다. 직원은 280명, 부서는 경영지원·인사·재무회계·영업관리·구매·영업(전국 8개 팀)·기술지원·물류 등 21개입니다. ERP도 있고 그룹웨어도 있습니다. 그런데 일이 그 안에서 깔끔하게 이어지지는 않습니다.

오래된 사내 ERP의 몇몇 화면에는 엑셀 업로드 버튼이 없습니다. 그래서 엑셀에 있는 값을 사람이 ERP 칸에 하나씩 옮겨 적습니다. 엑셀에는 "고객지원1팀"이라고 적혀 있는데 ERP는 "CS01"을 원하니, 옮기는 사람은 머릿속으로 바꿔 가며 칩니다.

한빛테크 사무실. 모니터 두 대에 엑셀과 ERP를 나란히 띄워 놓고 칸을 옮겨 적는 직원들

IT운영팀에서 ERP를 맡고 있는 한도윤 과장은 그 모습을 볼 때마다 같은 생각을 했습니다.

한도윤 과장의 생각

"저건 사람이 할 일이 아닌데. 판단은 사람이 하고, 옮겨 적는 건 컴퓨터가 하면 되잖아."

한 과장이 꺼낸 도구는 AutoHotkey(줄여서 AHK)입니다. 윈도우에서 키보드, 마우스, 엑셀, 파일, 웹 화면을 대신 다루게 해 주는 무료 프로그램입니다. 메모장으로 만드는 .ahk 파일 하나에 "이 단축키를 누르면 이렇게 해 줘"라고 적어 두면 그대로 해 줍니다. 예를 들면 이런 식입니다.

이 두 줄을 저장하고 더블클릭한 뒤 Ctrl+Alt+H를 누르면 인사 창이 뜹니다. 이번 달 다섯 명의 동료를 도울 스크립트도 결국 이것을 길게 늘인 것입니다.

IT운영팀 한도윤 과장(30대 후반, 안경, 셔츠 차림). 이 가이드의 안내 역할. 노트북 앞에서 동료의 요청 메모를 보고 있는 모습

이번 달에 일어날 일

한 과장이 정한 네 가지 원칙

"엑셀을 ERP에 자동으로 넣는다"에서 끝나면 사고를 더 빨리 낼 뿐입니다. 한 과장이 만드는 도구는 모두 같은 뼈대를 따릅니다.

  1. 바로 실행하지 않고 먼저 검사한다. 입력하기 전에 자료부터 확인하고, 실행하기 전에 "무엇이 바뀌는지"를 보여 줍니다(Dry Run).
  2. 사람이 판단할 문제는 멈춰서 보여 준다. 새로 생긴 부서, 같은 사업자번호, 읽을 수 없는 스캔. 프로그램이 짐작으로 고치면 안 되는 것들입니다.
  3. 한 건 처리할 때마다 결과를 확인한다. "입력하고 1초 쉬고 다음" 방식은 화면이 한 번만 어긋나도 그 뒤가 전부 틀어집니다.
  4. 모든 실행을 기록한다. automation.log 한 파일에 시작, 성공, 오류, 멈춤, 이어하기가 남습니다.
시작 전 · 내 PC 준비

설치하고, 자료 받고, 한 번 켜 보기

이 장만 따라 하면 실습 준비가 끝납니다. 20분이면 충분합니다. 윈도우 10 또는 11이 필요합니다(AHK는 맥에서 돌지 않습니다).

1. AutoHotkey v1.1 설치

v2가 아니라 v1.1을 받아야 합니다

공식 다운로드 페이지에 들어가면 v2가 먼저 보입니다. 이 가이드의 코드는 v1.1 문법이라 v2에서는 돌지 않습니다.

  1. AutoHotkey v1.1 다운로드 목록을 엽니다. (첫 다운로드 페이지에서는 아래쪽 "Other Releases"의 AutoHotkey v1.1 링크로 들어갑니다.)
  2. 목록에서 AutoHotkey_1.1.37.02_setup.exe를 받습니다. 1.1 중 가장 최신판입니다.
  3. 받은 파일을 실행하고 Express Installation을 누릅니다. 설치가 끝나면 창을 닫습니다.
  4. 확인: 바탕화면 빈 곳을 오른쪽 클릭해 새로 만들기에 "AutoHotkey Script"가 보이면 설치가 된 것입니다.
AutoHotkey 1.1 설치 화면 캡처(Express Installation 버튼이 보이는 화면)

2. 함께 쓰는 프로그램 확인

3. 실습 자료 받기

처음이라면 전체 묶음 하나만 받으면 됩니다. 사례 하나만 해 보고 싶다면 사례별 묶음을 받아도 됩니다. 사례별 묶음에도 공통 자료와 코드가 함께 들어 있습니다.

4. 차단 해제하고 압축 풀기

  1. 받은 zip 파일을 오른쪽 클릭해 속성을 엽니다.
  2. 아래쪽 "보안: 이 파일은 다른 컴퓨터로부터 가져왔습니다..." 옆의 차단 해제에 체크하고 확인을 누릅니다. 이 표시가 남아 있으면 엑셀이 파일을 "보호된 보기"로 열어 자동화가 막힐 수 있습니다.
  3. 오른쪽 클릭 압축 풀기로 바탕화면 같은 짧은 경로에 풉니다.
한빛테크_AHK실습데이터/ ├─ 00_읽어주세요.txt ├─ 00_공통/ 임직원 명부, 코드표, ERP 거래처 목록, ERP_웹(실습용 ERP) ├─ CASE1_인사_신규입사자등록/ ├─ CASE2_영업관리_월말실적취합/ ├─ CASE3_재무회계_증빙정리/ ├─ CASE4_경영지원_건강검진배정/ ├─ CASE5_구매_신규거래처등록/ └─ AHK_코드/ 스크립트 5개 + lib(공통 기능)

AHK_코드 폴더는 이 자리에 그대로 둡니다. 스크립트가 자기 위 폴더에서 실습 자료를 스스로 찾습니다.

5. 한 번 켜 보기

  1. AHK_코드 폴더의 CASE1_HR_Batch_Assistant.ahk를 더블클릭합니다.
  2. 작업 표시줄 오른쪽 아래(안 보이면 ^ 숨겨진 아이콘)에 초록색 H 아이콘이 생기고 "엑셀에서 대상 행을 복사한 뒤 Ctrl+Alt+H" 알림이 뜨면 성공입니다.
  3. 끌 때는 H 아이콘을 오른쪽 클릭해 Exit을 누릅니다. 코드를 보고 싶으면 같은 메뉴의 Edit This Script를 누릅니다.
실습 결과는 어디에 쌓이나요?

각 사례 폴더의 03_결과(영업관리는 03_취합결과)에 결과 파일이, 실습 자료 맨 위 폴더의 automation.log에 실행 기록이 쌓입니다. 자동화는 실제로 파일을 옮기고 엑셀을 고치니, 처음부터 다시 하려면 압축을 새로 풀면 됩니다.

준비가 끝났습니다. 이제 10월 첫째 주 화요일, 구매팀으로 갑니다.

10월 6일 화요일 오전 10:42 · CASE 5

계약까지 2주, 거래처 등록부터 막혔다

아침 회의가 끝나고 자리에 앉자 메신저가 울립니다. 영업팀 윤재성 과장입니다.

사내 메신저
정민호 과장의 생각

"20일까지면 2주. 처음 거래하는 업체니까 거래처 등록부터 해야 하는데, 서류는 다 보냈으려나."

거래처를 등록하려면 서류 여섯 가지가 필요합니다. 사업자등록증, 법인통장 사본, 법인인감증명서, 견적서, 거래조건 확인서, 담당자 연락처. 공유폴더를 열어 보니 파일이 네 개뿐입니다.

정민호 과장(40대 초반, 꼼꼼한 인상)이 공유폴더의 파일 네 개와 필수서류 목록을 번갈아 보며 고개를 갸웃하는 장면
정민호 과장의 생각

"인감증명서랑 거래조건 확인서가 없네. 요청 메일을 또 써야겠다. 지난번엔 서류 이름 하나를 빠뜨려서 두 번 요청했었지."

서류가 다 모여도 할 일은 길게 남아 있습니다.

평소라면

  1. 거래처 폴더와 하위 폴더 만들기
  2. 서류 파일 이름을 규칙대로 바꿔 옮기기
  3. 엑셀 거래처 관리대장에 한 줄 적기
  4. ERP 거래처 등록 화면에 기본정보 입력
  5. 계약서 양식 복사, 견적서 정리, 업무 기록

한 과장이 만든 Procurement Assistant

서류 검사, 빠진 서류 안내문, "실행하면 바뀌는 것" 미리 보기, 그리고 위 다섯 가지를 차례로 처리합니다. 단, ERP가 예상하지 못한 반응을 보이면 그 자리에서 멈춥니다.

한
한도윤 과장"이 도구는 웹 ERP 화면도 다룹니다. 사람처럼 마우스로 칸을 찾아 누르는 게 아니라, 화면 속 입력칸마다 붙어 있는 이름표(id)를 보고 값을 바로 넣어요. 그래서 창이 가려져 있어도 정확합니다. 원리는 부록에 따로 적어 뒀습니다."

멈춘 화면 앞에서

ERP가 "동일 사업자번호가 존재합니다"라고 막았습니다. 처음 거래하는 업체인데 왜 이미 있을까요. 정 과장은 바로 새로 등록하지 않고 단서를 모읍니다.

"신규 거래처 등록 중단" 창 앞에서 턱을 괴고 ERP 거래처 목록을 뒤져 보는 정민호 과장
정민호 과장의 생각

"신규가 아니라, 예전에 거래하던 미래넷솔루션이 이름을 바꾼 거구나. 여기서 새 코드를 만들었으면 같은 회사가 ERP에 두 번 있을 뻔했다."

정 과장은 ERP 담당 한도윤 과장에게 기존 거래처 V0187의 상호 변경과 거래 재개를 요청합니다. 프로그램이 이 판단을 대신 내렸다면 깔끔해 보였겠지만 틀렸을 겁니다. 자동화가 멈춰야 할 자리를 설계하는 것, 이 사례에서 가장 중요한 부분입니다.

한 가지 더 배운 것

이번 실행은 폴더 만들기, 파일 정리, 관리대장 기록까지 끝낸 뒤 ERP에서 멈췄습니다. 이미 바뀐 것들은 다시 정리해야 합니다. 사업자번호 조회를 미리 보기 단계로 당기면 아무것도 바꾸기 전에 멈출 수 있습니다. 위 실습에서 "사전검사에 ERP 사업자번호 조회 포함"을 켜고 다시 해 보세요.

내 PC에서 실제로 해 보기약 10분
스크립트 CASE5_Procurement_Assistant.ahk다시 열기 Ctrl+Alt+P결과 03_결과

준비물

  • 미래네트웍스_1차제출/10월 6일 업체가 보낸 서류 4개
  • 미래네트웍스_2차제출/10월 8일 보완 서류 2개와 회신 메일
  • 거래처_관리대장.xlsx구매팀이 엑셀로 관리하는 거래처 목록
  • procurement_rules.ini필수서류 판별 키워드와 표준 파일명
  • 00_공통/ERP_웹/실습용 ERP. 스크립트가 크롬이나 엣지로 엽니다

따라 하기

  1. CASE5_Procurement_Assistant.ahk를 더블클릭합니다.

    "Procurement Assistant" 창이 뜹니다. 업체 자료 폴더에 1차 제출 폴더가 이미 들어 있고, 업체 정보 칸도 서류를 보고 채워 둔 상태입니다.

  2. 서류 검사를 누릅니다.

    법인인감증명서와 거래조건 확인서가 "없음"으로 나오고, 아래 줄에 "검증 4 / 6, 등록 불가"가 뜹니다.

  3. 미비서류 안내문 생성을 누릅니다.

    빠진 두 서류를 적은 안내문이 뜹니다. 클립보드에 이미 복사돼 있어 메일에 붙여 넣기만 하면 됩니다.

  4. 폴더 추가로 미래네트웍스_2차제출을 고르고, 서류 검사를 다시 누릅니다.

    "검증 6 / 6, 거래처 등록 가능"으로 바뀝니다.

    이틀 뒤 업체가 보완 서류를 보냈다고 생각하고 진행합니다.

  5. 거래처 등록을 누르고, Dry Run 창을 읽은 뒤 확인을 누릅니다.

    실행 전에 바뀔 일이 먼저 보입니다. 폴더 7개, 파일 6개 이동, 관리대장 1행, ERP 1건.

  6. ERP 창이 채워지는 것을 지켜봅니다.

    폴더가 생기고 서류 이름이 바뀐 뒤 크롬에서 ERP 칸이 채워집니다. 사업자번호가 들어가는 순간 중복 경고가 뜨고, AHK는 "신규 거래처 등록 중단" 창을 띄운 채 멈춥니다.

  7. 기존 거래처 확인을 누릅니다.

    V0187의 상태(거래중지), 대표자, 최근 거래일이 나옵니다.

이렇게 나오면 성공

  • 03_결과필수서류 검증 결과와 미비서류 안내문(txt)
  • 구매_거래처/미래네트웍스_1234567890표준 이름으로 바뀐 서류 6개. 멈추기 전에 이미 끝난 일입니다
  • 거래처_관리대장.xlsx맨 아래 새 행, 비고 "ERP 등록 대기"
  • automation.log 마지막 두 줄STOP ... ERP_DUPLICATE_BIZNO와 PENDING ... STEP6~8 미실행

한 번 더 해 보기. 압축을 새로 풀고, 5번 전에 "사전검사에 ERP 사업자번호 조회 포함"을 켭니다. 이번에는 Dry Run 창이 "실행할 수 없습니다"로 끝나고 아무것도 바뀌지 않습니다.

코드 들여다보기: Procurement Assistant
10월 29일 목요일 오후 2:00 · CASE 1

다음 주 월요일, 43명이 한꺼번에 들어온다

평소 신규 입사자는 한 달에 5명에서 10명입니다. 그런데 이번엔 고객지원센터를 새로 열면서 11월 2일에 43명이 동시에 입사합니다. 채용 담당 이하늘 주임이 최종 명단을 보냈습니다.

20261102_신규입사자_최종.xlsx 앞부분

김서연 대리의 생각

"43명. 한 명에 1분이면 40분이네. 시간보다 무서운 건 지난달 같은 실수야. 고객지원2팀 직원을 CS01로 넣는 바람에 조직 권한까지 잘못 만들어졌었지."

인사 ERP의 [신규 사원 등록] 화면에는 엑셀 업로드가 없습니다. 게다가 부서·직급·근무지를 이름이 아니라 코드로 받습니다. 고객지원1팀은 CS01, 사원은 10, 서울은 01. 복사해서 붙여넣기만으로는 끝나지 않습니다.

김서연 대리(30대 초반)가 왼쪽 모니터의 엑셀 명단과 오른쪽 모니터의 ERP 입력 화면을 번갈아 보며, 메모지에 적어 둔 부서코드표를 확인하는 장면

평소라면

사번 복사, 붙여넣기, 이름 복사, 붙여넣기, 부서를 보고 코드 떠올리기, 직급·근무지 코드, 입사일, 등록. 한 명에 40~60초, 43명이면 30~40분. 눈이 피곤해질 무렵 실수가 나옵니다.

HR Batch Assistant

엑셀에서 행을 복사하고 Ctrl+Alt+H. 먼저 명단을 검사하고, 문제가 하나라도 있으면 아예 시작하지 않습니다. 코드는 설정 파일(hr_mapping.ini)에서 찾아 바꾸고, 한 명마다 ERP의 "등록 완료"를 확인한 뒤 다음으로 넘어갑니다.

실습에서는 이 순서를 그대로 따라갑니다. 처음 받은 명단으로 검사하고, 채용 담당과 통화하고, 고친 명단을 다시 받고, 등록합니다. 등록 중에 무슨 일이 생길지는 직접 확인해 보세요.

사람이 판단한 세 군데

상황누가왜
부서명·직급·근무지를 코드로프로그램규칙이 정해져 있다. 설정 파일 한 곳에서 관리
"고객지원2팀 " 끝 공백프로그램의미가 바뀌지 않는다. 지운 사실은 보고서에 남김
처음 보는 부서 "고객성공팀"사람새 조직인지 오타인지 프로그램은 모른다. 확인한 코드를 등록하면 다음부터 자동
입사일 "11/2"사람연도를 짐작해 넣지 않는다
39번째 줄 사번 중복사람증상은 39번째 줄이지만 HT260468이 비어 있다. 38번째 줄이 잘못 적었을 수 있다
등록 중 세션 만료사람다시 로그인은 사람만 할 수 있다. 프로그램은 어디까지 됐는지 기억한다
김서연 대리의 생각

"세션이 끊겼을 때가 제일 좋았어. 예전 같으면 ERP 목록을 처음부터 뒤져서 어디까지 들어갔는지 찾았을 텐데, 31명 완료, 마지막은 최은지, 바로 이어서 하면 되더라."

내 PC에서 실제로 해 보기약 10분
스크립트 CASE1_HR_Batch_Assistant.ahk단축키 Ctrl+Alt+H결과 03_결과

준비물

  • 20261102_신규입사자_최종.xlsx처음 받은 명단 43명. 확인할 줄이 섞여 있습니다
  • 20261102_신규입사자_최종_v2.xlsx채용 담당이 고쳐서 다시 보낸 명단
  • hr_mapping.ini부서·직급·근무지 이름을 ERP 코드로 바꾸는 표
  • 00_공통/ERP_웹/실습용 ERP. 등록을 시작하면 스크립트가 엽니다

따라 하기

  1. 스크립트를 더블클릭합니다.

    오른쪽 아래에 "엑셀에서 대상 행을 복사한 뒤 Ctrl+Alt+H" 알림이 뜹니다.

  2. _최종.xlsx를 열고 A2 칸을 누른 뒤 Ctrl+Shift+End, Ctrl+C로 복사합니다.

    제목 줄(1행)은 빼고 43명만 고릅니다.

  3. Ctrl+Alt+H를 누릅니다.

    "사전검증" 창에 정상 40건, 확인 필요 3건이 나옵니다(18번째 고객성공팀, 27번째 입사일 "11/2", 39번째 사번 중복). 등록 시작 버튼은 보이지 않습니다.

  4. 미등록 코드 등록을 누르고 ERP 코드 칸에 CS03을 넣은 뒤 등록을 누릅니다.

    검증이 다시 돌고 확인 필요가 2건으로 줄어듭니다.

    고객성공팀은 새로 생긴 조직입니다. "다음부터 자동 적용"은 켠 채로 두면 hr_mapping.ini에 저장됩니다.

  5. _v2.xlsx를 열어 같은 범위를 복사하고, 검증 창의 다시 검증을 누릅니다.

    문제 0건, "등록 대상 43명"과 등록 시작 버튼이 보입니다.

  6. 등록 시작을 누릅니다.

    실습 전용 크롬 창이 뜨고 ERP 칸이 한 명씩 채워집니다. 왼쪽 위 진행 창에 몇 번째인지 나옵니다.

    F8 일시정지, Esc 긴급중단.

  7. 31명째에서 멈추면 ERP 창의 다시 로그인을 누릅니다.

    AHK 창에 "완료 31건, 마지막 정상 등록 HT260461 최은지"가 떠 있습니다.

  8. AHK 창의 이어하기를 누릅니다.

    남은 12명이 들어가고 "등록 43명, 중단 후 이어하기 1번, ERP 목록 확인: 모두 있음"으로 끝납니다.

이렇게 나오면 성공

  • ERP 등록 목록HT260431부터 HT260473까지 43명
  • 03_결과/ERP_등록확인.csvERP에서 다시 읽은 43명
  • automation.logSTART, SUCCESS 31줄, ERROR, PAUSE, RESUME, END(SUCCESS=43) 순서
  • hr_mapping.ini고객성공팀=CS03 한 줄이 늘어남

처음부터 다시 하려면. ERP 화면 아래 실습 데이터 비우기를 누르고 압축을 새로 풉니다. 비우지 않으면 ERP가 "이미 등록된 사번"으로 막습니다.

코드 들여다보기: HR Batch Assistant
10월 30일 금요일 오후 1:10 · CASE 3

월말 금요일 오후, 287개의 파일

월말이면 메일과 그룹웨어로 거래처 증빙이 쏟아집니다. 세금계산서, 거래명세서, 발주서, 견적서, 사업자등록증, 통장사본. 이번 달은 287개입니다. 회계감사에 대비해 모든 증빙은 정해진 폴더와 이름으로 보관해야 합니다.

02_증빙보관함/2026/10/V0231_미래산업/01_세금계산서/ └ 20261005_V0231_세금계산서_3850000.pdf 날짜(작성일) _ 거래처코드 _ 문서종류 _ 합계금액(부가세 포함)

그런데 받은 파일 이름은 이렇습니다.

scan_001.pdf · IMG_4421.pdf · 세금계산서 (3).pdf · 10월거래명세표_최종.pdf · 사업자.pdf · document.pdf · 통장.pdf ...
이수진 대리의 생각

"scan_001이 어느 회사 무슨 서류인지는 열어 봐야 알지. 287개를 다 열고, 사업자번호로 거래처 코드 찾고, 금액 확인하고, 폴더 만들고, 이름 바꾸고... 오늘 야근이네."

이수진 대리(30대 중반)가 다운로드 폴더에 쌓인 수백 개의 PDF 아이콘을 보며 한숨 쉬는 장면. 창밖은 금요일 오후 햇살

이 일은 완전 자동이 될 수 없습니다. 스캔본 88개는 글자를 복사할 수도 없는 그림이고, 파일 이름에는 거래처도 금액도 없습니다. 한 과장은 방향을 바꿨습니다.

한
한도윤 과장"판단은 이 대리님이 하세요. 대신 판단 말고는 전부 제가 할게요. 파일 이름에서 단서를 찾아 미리 채워 두고, 저장될 이름을 바로 보여 드리고, 폴더는 알아서 만들고, 같은 파일이 두 번 오면 잡아낼게요."

평소라면

파일 열기, 거래처 코드 찾기, 이름 규칙대로 타이핑, 폴더 찾아가거나 만들기, 옮기기. 이름 오타 하나면 감사 때 그 파일을 못 찾습니다. 같은 파일이 두 번 오면 두 번 보관됩니다.

증빙 정리 창 (Ctrl+Alt+F)

사람은 거래처·문서·날짜·금액 네 가지만 고릅니다. 이름과 폴더는 프로그램이 만들고, 내용이 같은 파일은 이름이 달라도 잡아내고, 모든 처리를 CSV 기록으로 남깁니다.

오후 5시 40분

다 끝냈다고 생각할 즈음, 프로그램이 오늘 결과를 보여 줍니다. 받은 파일 287개 중 274개 등록, 8개 중복 제외, 그리고 보류 5개.

퇴근 직전 "오늘 처리 결과" 창을 보며 안도와 아쉬움이 섞인 표정의 이수진 대리. 모니터에 287 / 274 / 8 / 5
이수진 대리의 생각

"이 다섯 개는 내가 봐도 지금 결정할 수 없는 것들이네. 흐린 스캔은 원본을 다시 받고, 신우테크는 거래처 등록부터, 개인 명의 통장은 누구 건지 물어봐야지. 적어도 빠뜨린 건 없다는 게 확실하니 마음이 편하다."

내 PC에서 실제로 해 보기파일 6개, 약 15분
스크립트 CASE3_Evidence_Organizer.ahk단축키 Ctrl+Alt+F결과 02_증빙보관함

준비물

  • 01_받은파일/이번 달 받은 증빙 287개
  • 02_증빙보관함/10월 5일에 먼저 정리한 15개와 정리 로그
  • 00_공통/ERP_거래처목록.csv사업자번호로 거래처 코드를 찾는 표

따라 하기

  1. 스크립트를 더블클릭하고, 탐색기로 01_받은파일 폴더를 엽니다.

  2. 10월거래명세표_최종.pdf를 한 번 클릭해 고르고 Ctrl+Alt+F를 누릅니다.

    "증빙자료 등록 - 202610" 창이 뜨고 왼쪽 목록에서 그 파일이 골라져 있습니다.

  3. 파일 열기로 PDF를 보고, 공급자 사업자등록번호를 "사업자번호로 찾기" 칸에 칩니다.

    거래처가 저절로 골라집니다.

  4. 문서 종류, 발행일(작성일자), 합계금액(부가세 포함)을 넣고 등록을 누릅니다.

    넣는 동안 "저장 예정" 줄에 바뀔 파일 이름이 보입니다.

  5. 아래 표의 나머지 파일을 위에서부터 같은 방법으로 처리하고, 내 입력이 표와 같은지 맞춰 봅니다.

    창 왼쪽 목록에서 파일 이름을 누르면 바로 고를 수 있습니다. 순서를 지켜야 중복 결과가 표와 같습니다.

  1. 같은 내용의 파일이라는 비교 창이 뜨면 중복으로 제외를 누릅니다.

    파일이 01_받은파일/_중복제외로 옮겨집니다.

    누르기 전에 기존 파일 열기와 신규 파일 열기로 눈으로 확인합니다.

  2. 판단할 수 없는 파일은 "보류 사유"를 적고 건너뛰기(보류)를 누릅니다.

  3. 오늘 처리 결과를 누릅니다.

    입력 파일 287, 정상 등록 2, 중복 제외 2, 보류 2, 미처리 281.

이렇게 나오면 성공

  • 02_증빙보관함/2026/10/거래처/문서종류등록한 파일이 규칙대로 바뀐 이름으로 들어 있음. 없던 거래처 폴더는 새로 생김
  • 02_증빙보관함/202610_증빙정리로그.csv처리할 때마다 원본 이름, 결과, 바뀐 이름, 시각이 한 줄씩
  • 01_받은파일/_중복제외중복으로 뺀 파일 2개

287개를 끝까지. 직접 다 하면 두세 시간 걸립니다. 강사용 기대결과의 정답표로 자동 시연을 돌리면 287 = 274 + 8 + 5를 확인할 수 있습니다(부록 D). 다시 하려면 압축을 새로 풉니다.

코드 들여다보기: 증빙 정리 창
10월 30일 금요일 오후 4:00 · CASE 2

마감 시각, 여덟 개의 "최종" 파일

매월 마지막 영업일 오후 4시는 영업팀 실적 마감입니다. 서울1·2·3팀, 경기, 대전, 대구, 부산, 광주 여덟 팀이 본사 양식(SALES-2026-03)으로 실적을 보냅니다. 월요일 아침 임원 회의 자료가 이 파일들로 만들어집니다.

박준호 과장의 생각

"진짜최종, v2, (수정)... 이름이야 그렇다 쳐. 문제는 안이지. 지난달에도 누가 열을 하나 끼워 넣어서 매출 자리에 예상매출이 들어갔었는데."

박준호 과장(40대 중반)이 시계가 4시를 가리키는 가운데 메일함에 도착한 엑셀 첨부 여덟 개를 보는 장면

여덟 개 파일을 하나씩 열어 복사해 붙이는 방식에는 함정이 세 가지 숨어 있습니다.

한
한도윤 과장"이건 파일 합치기가 아니라 품질 검사예요. 열은 위치가 아니라 이름으로 찾고, 셀을 복사하지 않고 엑셀이 계산한 값을 읽고, 숨긴 행도 읽으면 함정 세 개가 한꺼번에 사라집니다. 대신 열이 빠졌거나 옛 양식이면 제가 짐작하지 않고 박 과장님께 넘길게요."
박준호 과장의 생각

"436건이 하나도 안 빠졌고, 회의 전에 확인할 게 네 건이네. 대성정밀은 서울1팀과 서울3팀이 같이 올렸고, 대전팀 반품은 맞는지 보고, 서울2팀 목표 0원은 배정이 빠진 것 같고, 부산팀 1억 8천4백만 원은 계약서랑 맞춰 봐야지."

내 PC에서 실제로 해 보기약 5분
스크립트 CASE2_Monthly_Sales_Collector.ahk단축키 Ctrl+Alt+S결과 03_취합결과

준비물

  • 01_1차제출/10월 30일 오후 4시까지 받은 8개 팀 파일
  • 02_재제출/다시 받은 부산팀·광주팀 파일
  • 본사_표준양식_SALES-2026-03.xlsx열 이름과 순서의 기준

따라 하기

  1. (선택) 대구팀_실적보고_1030.xlsx와 경기팀_10월실적(수정).xlsx를 열어 함정을 먼저 봅니다.

    대구팀은 행 번호가 건너뛰는 곳이 있고(필터로 숨은 행), 경기팀 매출금액 칸을 누르면 수식이 보입니다.

    보고 나서 닫습니다.

  2. 스크립트를 더블클릭하고 Ctrl+Alt+S를 누릅니다.

    제출 폴더 칸에 01_1차제출이 이미 들어 있습니다.

  3. 구조 검사를 누릅니다.

    몇 초 뒤 팀별 판정이 나옵니다. 서울2팀 주의, 부산팀·광주팀 오류, 나머지 다섯 팀 정상.

    팀 줄을 더블클릭하면 이유가 나옵니다. 대구팀은 숨은 행, 경기팀은 수식 칸 개수까지 보여 줍니다.

  4. 폴더 추가로 02_재제출을 고르고 구조 검사를 다시 누릅니다.

    부산팀과 광주팀이 정상으로 바뀝니다. 나중에 추가한 폴더의 파일이 앞 파일을 대신합니다.

  5. 취합 실행을 누르고, 결과 창에서 예를 누릅니다.

    취합 436건, 달성률 103.75%, 달성 팀 6 / 미달 2, 달성자 57 / 미달 24, 확인 필요 4건. 결과 파일이 열립니다.

이렇게 나오면 성공

  • 2026년10월_영업실적_취합.xlsx요약·팀별·담당자별·확인필요·취합데이터 시트 5개
  • 취합데이터 시트436행. 원본파일 열에 어느 팀 파일인지 남음. 숨은 행과 수식 값도 숫자로 들어옴
  • 확인필요_목록.txt대성정밀 중복, 대전팀 음수 매출, 서울2팀 목표 0원, 부산팀 1억 원 이상 매출

다시 하려면. 결과 파일이 엑셀에 열려 있으면 덮어쓰지 못하니 먼저 닫습니다. 입력 파일은 읽기만 해서 압축을 새로 풀 필요가 없습니다.

코드 들여다보기: Monthly Sales Collector
11월 5일 목요일 ~ 11월 10일 화요일 · CASE 4

120명, 120석, 그리고 저마다의 사정

올해 정기 건강검진 대상은 120명입니다. 검진센터는 11월 16일(월)부터 18일(수)까지 하루 오전 20명, 오후 20명씩 모두 120석을 열어 주었습니다. 정원과 사람 수가 딱 맞습니다. 한 사람만 어긋나도 누군가는 자리가 없습니다.

직원들은 1순위와 2순위 날짜, 오전·오후 제한을 냈습니다. 비고란에는 이런 말들이 적혀 있습니다.

최유진 사원의 생각

"엑셀로 하나씩 칸을 채우다 보면 어느 순간 11월 16일 오전이 22명이 되어 있겠지. 안내 메일도 120통인데 오전 검진이랑 오후 검진은 금식 시간이 달라."

최유진 사원(20대 후반, 입사 2년차)이 화이트보드에 6칸 달력을 그려 놓고 포스트잇 120장을 붙이다 고민하는 장면

평소라면

명단을 보며 한 명씩 칸에 넣고, 정원을 손으로 세고, 안내문 120통을 복사해 이름과 시간을 고칩니다. 변경 요청이 오면 처음부터 다시 셉니다.

건강검진 일정 관리

정해진 규칙으로 자동 배정하고, 사정이 있는 사람만 따로 모아 줍니다. 마감된 칸에는 넣을 수 없고, 안내문은 사람마다 다르게 만들고, 변경 요청은 접수 순서대로 정원을 다시 세며 처리합니다.

자동 배정 규칙
접수 순서대로 1순위 날짜, 안 되면 2순위 날짜
오전/오후 제한을 지키고, 둘 다 되면 남은 자리가 많은 쪽(같으면 오전)
비고에 날짜와 함께 출장·미팅·회의·교육·휴가·불가·외근이 있고 희망일과 겹치면 자동 배정하지 않음(입력이 서로 맞지 않음)
희망일이 비었거나 모두 마감이면 자동 배정하지 않음
입장 시간은 슬롯 안에서 사번 순서로 30분 간격 4명씩
최유진 사원의 생각

"전화는 여덟 명한테만 했어. 11/16만 가능하다던 분 자리는, 2순위가 넉넉한 다른 분께 양해를 구해서 만들었고. 변경 요청 17건도 마감된 칸으로 가려던 두 분만 반려 안내하면 끝."

내 PC에서 실제로 해 보기약 15분
스크립트 CASE4_Health_Checkup_Scheduler.ahk안내문 복사 Ctrl+Alt+M결과 03_결과

준비물

  • 01_검진센터_예약가능슬롯.xlsx사흘, 오전·오후 6개 슬롯, 각 20석
  • 02_2026_건강검진_희망일_취합.xlsx120명의 1·2순위 희망일과 비고
  • 03_건강검진_안내문_템플릿.txt안내문 틀. 오전·오후 금식 안내가 다름
  • 2단계_변경처리/확정일정(04)과 변경 요청 17건(05)

1단계: 배정하고 안내문 만들기

  1. 스크립트를 더블클릭합니다.

    "건강검진 일정 관리" 창이 1단계 탭으로 뜨고, 120명이 표에 읽혀 있습니다.

  2. 자동 배정 실행을 누릅니다.

    자동 배정 112명, 수동 확인 필요 8명.

  3. "수동 확인만 보기"를 켜고, 아래 표를 위에서부터 한 줄씩 넣습니다. 직원 고르기, 슬롯 고르기, 선택 직원 배정/변경 순서입니다.

    "자리 양보" 줄의 직원은 수동 확인 대상이 아니라서 그 줄에서는 "수동 확인만 보기"를 끄고 사번으로 찾습니다. 순서를 바꾸면 정원 초과로 막힙니다.

  1. 확정 저장 + 안내문 만들기를 누릅니다.

    슬롯 6개가 모두 20/20이 되고, 03_결과에 확정일정과 안내문 120건이 생깁니다.

  2. 표에서 직원 한 명을 고르고 Ctrl+Alt+M, 메모장에 붙여 넣어 봅니다.

    그 사람의 안내문이 나옵니다. 오전과 오후는 금식 안내가 다릅니다.

2단계: 변경 요청 17건 처리

  1. "2단계 변경 처리" 탭에서 확정일정 + 변경 요청 불러와 처리를 누릅니다.

    17건의 처리 결과가 표로 나오고, 위 줄의 인원이 20 / 18 / 19 / 20 / 17 / 18로 바뀝니다.

    파일 고르는 창이 두 번 뜨는데, 04와 05 파일이 이미 골라져 있으니 열기만 누릅니다.

  2. 처리 결과 저장 + 변경 안내문을 누릅니다.

이렇게 나오면 성공

  • 건강검진_확정일정.xlsx, 안내문_전체.txt120명, 입장 시간 포함, 안내문 120건
  • 일정변경_처리결과.xlsx처리결과·최종현황 시트. 최종 20 / 18 / 19 / 20 / 17 / 18, 20명 넘는 칸 없음
  • 변경안내문.txt일정이 바뀐 사람의 안내문만

다시 하려면. 스크립트를 끄고(H 아이콘 오른쪽 클릭, Exit) 다시 켜면 처음 상태로 돌아갑니다. 입력 파일은 바뀌지 않습니다.

코드 들여다보기: 건강검진 일정 관리
11월 16일 월요일 아침 · 에필로그

검진센터 앞에서 돌아본 한 달

건강검진 첫날 아침, 검진센터 대기실에서 한도윤 과장은 지난 한 달을 떠올립니다.

검진센터 대기실, 순서표를 든 한도윤 과장 옆으로 지난 한 달의 다섯 동료가 웃으며 지나가는 장면
날짜누구예전이번 달
10/6구매팀 정민호서류 확인, 요청 메일, 폴더·대장·ERP 손 입력빠진 서류 안내문 자동 작성, 같은 회사 중복 등록을 막음
10/29인사팀 김서연43명 손 입력 30~40분, 코드 실수 위험검사 후 자동 등록, 세션 만료에도 이어서 완료
10/30재무회계팀 이수진287개 열고 이름 짓고 옮기기네 가지만 고르면 나머지 자동, 중복 8건과 보류 5건까지 정확히
10/30영업관리팀 박준호복사·붙여넣기, 빠진 행과 엉뚱한 값436건 누락 없이 취합, 회의 전 확인 4건
11/5경영지원팀 최유진포스트잇 배정, 안내문 120통 손 편집112명 자동 배정, 전화는 8명만, 변경 17건 처리
한도윤 과장의 생각

"다섯 도구 모두 결국 같은 걸 했어. 판단은 사람에게 남기고, 반복은 컴퓨터가 하고, 멈춰야 할 땐 멈추고, 전부 기록하고. 그 기준을 지키니까 사람들이 도구를 믿더라."

내 업무에 적용해 보려면

  1. 반복되는 일을 하나 고릅니다. 매주, 매달 같은 칸을 채우는 일이 좋습니다.
  2. 판단과 반복을 나눕니다. "이건 내가 봐야 아는 것", "이건 규칙대로 하면 되는 것"으로 종이에 두 칸을 그려 봅니다.
  3. 규칙 쪽부터 자동화합니다. 이 가이드의 코드를 고쳐 쓰는 것이 가장 빠릅니다. 부록의 구현 순서를 참고하세요.
  4. 멈출 자리와 기록할 자리를 정합니다. 문제가 있으면 시작하지 않기, 한 건마다 확인하기, 로그 남기기.
부록

직접 만들 때 필요한 것들

A. AHK가 웹 ERP 칸을 id로 채우는 방법

크롬 화면 속 입력칸은 윈도우 프로그램의 칸이 아니라서 AHK의 일반 명령(ControlSetText)이 닿지 않습니다. 그래서 크롬을 원격 조종 단자(원격 디버깅 포트)를 연 채로 켜고, AHK가 그 단자로 "#empId 칸에 이 값을 넣어" 같은 명령을 보냅니다. 크롬이 공식으로 제공하는 통로(Chrome DevTools Protocol)이고, 외부 라이브러리 없이 윈도우에 기본으로 있는 WinHTTP로 연결합니다.

ERP 화면요소 id
신규 사원 등록#empId #empName #deptCode #posCode #hireDate #locCode, 버튼 #btnRegister, 목록 #hrList
거래처 등록#vName #vBizNo #vCeo #vKind #vItem #vAddr #vContact #vPhone, 버튼 #btnVendorSave
상태줄#statusBar (클래스 .ok 완료, .error 오류, .busy 저장 중)
팝업세션 만료 #sessionModal.show + #btnRelogin, 중복 경고 #dupModal.show + #btnDupOk

실습용 브라우저는 개인 크롬과 섞이지 않는 전용 프로필로 따로 뜨고, 단자는 이 PC 안(127.0.0.1)에서만 열립니다. 예전 자료에 많은 IE 방식은 IE가 퇴역해 쓰지 않습니다.

코드 들여다보기: 웹 요소 제어 모듈(HB_Browser)

B. 직접 만든다면 이 순서로

이야기는 날짜 순서였지만, 코드를 처음부터 만들어 본다면 아래 순서가 한 칸씩 쉽게 올라갑니다.

순서사례새로 익히는 것
1CASE 1 인사단축키, 클립보드, 설정 파일(INI), 웹 칸에 값 넣기와 완료 확인, 멈춤과 이어하기
2CASE 3 재무회계입력 창(GUI), 파일 이름 바꾸기·옮기기, 내용 비교, CSV 기록
3CASE 2 영업관리엑셀 조종(COM), 열 이름으로 찾기, 숨은 행·수식, 결과 통합 문서 만들기
4CASE 4 경영지원규칙으로 배정하기, 정규식으로 글 읽기, 정원 같은 상태 관리, 템플릿 문서
5CASE 5 구매미리 보기(Dry Run), 여러 시스템을 잇는 단계 실행, 멈출 자리 설계

C. 만들면서 실제로 겪은 함정 여섯 가지

  1. 스크립트는 UTF-8(BOM)으로 저장합니다. 그렇지 않으면 한글이 깨져 "Missing close-quote" 오류가 납니다. 메모장의 "다른 이름으로 저장"에서 인코딩을 "UTF-8(BOM)"으로 고르세요.
  2. 변수 이름은 대소문자를 가리지 않습니다. 전역 ROWS와 함수 안의 rows는 같은 변수라서 명단이 덮어써진 적이 있습니다. 전역 변수에는 g_ 를 붙입니다.
  3. 버튼을 글자로 찾으면 엉뚱한 곳이 눌릴 수 있습니다. 같은 글자가 든 설명 문장이 먼저 걸립니다. 확실히 하려면 Button1 같은 컨트롤 이름을 씁니다.
  4. 엑셀을 조종할 때는 경고창을 끄고 저장 형식을 지정합니다. DisplayAlerts를 끄고 SaveAs(경로, 51). 빠뜨리면 보이지 않는 창 뒤에서 멈춥니다.
  5. 한글은 키보드 흉내(Send)로 치지 않습니다. 입력기 조합 중에 글자가 섞입니다. 윈도우 프로그램은 ControlSetText, 웹은 칸에 값을 직접 넣습니다.
  6. 한글이 든 설정 파일(INI)은 UTF-16으로. 그래야 IniRead가 한글 이름을 읽습니다. 실습 INI는 이미 그렇게 되어 있습니다.

D. 사람 손 없이 끝까지 돌려 보기(자동 시연)

각 스크립트는 /auto를 붙여 실행하면 사람이 할 판단(코드 확인, 다시 로그인, 서류를 보고 고르기)을 대신 넣어 처음부터 끝까지 돕니다. 명령 프롬프트에서 AHK_코드 폴더로 이동한 뒤 실행합니다. 결과가 정답과 같은지 강사용 기대결과와 비교해 볼 수 있습니다.

E. 자료 받기

AutoHotkey 문법은 AutoHotkey v1 공식 문서를 참고하세요.

태그AutoHotkeyAHK업무자동화사무자동화엑셀ERP반복업무RPA단축키웹자동화실습자료직장인
최종 수정: 2026-10-06
무료 AI 활용 진단 내 AI 활용 수준, 상위 몇 %일까요? 진단하면 내 점수와 지금 무엇부터 할지 알려드립니다.