파이썬 매크로 만들기: 40대 직장인이 사내 ERP 노가다 끝낸 방법

실무 현장에서 파이썬 매크로 만들기 기술을 제 손으로 직접 완성해 보기 전까지, 월말만 되면 제 오른쪽 손목은 파스를 달고 살아야 했습니다.

파이썬을 배워서 인터넷 데이터를 크롤링하고 엑셀로 깔끔하게 취합하는 것까지는 좋았습니다. 문제는 그렇게 예쁘게 만든 엑셀 데이터를 우리 회사의 ‘구형 사내 ERP 프로그램’에 등록할 때 발생했습니다. 2010년대에 만들어진 이 투박한 사내 시스템은 엑셀 파일 일괄 업로드 기능을 지원하지 않았습니다.

결국 저는 듀얼 모니터 왼쪽에 엑셀 파일을 띄워두고, 오른쪽 ERP 창에 거래처명 복사해서 붙여넣기, 탭(Tab) 키 누르고 사업자번호 붙여넣기, 마우스로 ‘등록’ 버튼 클릭하기를 200번씩 반복해야 했습니다. 디지털 시대에 이게 대체 무슨 코미디인가 싶지만, 대한민국의 수많은 40대 중소·중견기업 실무자들은 지금 이 순간에도 이런 어처구니없는 ‘디지털 막일’을 수행하고 있습니다.

인터넷 브라우저가 아니라서 셀레니움(Selenium)도 통하지 않는 이 꽉 막힌 사내 프로그램을 뚫어버리기 위해, 컴퓨터의 마우스와 키보드를 내 손 대신 움직여주는 궁극의 물리적 자동화 기술을 도입했습니다.

셀레니움이 통하지 않는 사내 프로그램의 절망감

파이썬 매크로 만들기 전 엑셀 수기 입력을 해야 했던 사내 ERP 프로그램 창
대체 텍스트: 파이썬 매크로 만들기 전 엑셀 수기 입력을 해야 했던 사내 ERP 프로그램 창

파이썬을 조금 배우신 분들은 “그거 웹 자동화 라이브러리로 클릭하게 만들면 되지 않나요?”라고 묻습니다. 하지만 인터넷 창(크롬)에서 돌아가는 웹사이트가 아니라, 바탕화면에 깔려 있는 회사 전용 프로그램(CS 프로그램)이나 카카오톡 PC 버전 같은 일반 소프트웨어는 내부의 HTML 코드를 읽을 수 없기 때문에 꼼짝없이 막혀버립니다.

이럴 때 필요한 것이 바로 모니터 화면의 특정 ‘좌표(X, Y)’를 찾아가서 강제로 마우스를 클릭하고 키보드를 두드려주는 아날로그식 자동화입니다.

내 모니터 앞에 투명 인간 인턴을 한 명 앉혀두고 “오른쪽으로 5센티미터 마우스 이동해서 두 번 클릭하고, ‘홍길동’이라고 타이핑해!”라고 지시하는 것과 똑같습니다.

40대 실무자를 구원할 파이썬 매크로 만들기 (PyAutoGUI)

이 투명 인간 인턴의 이름은 바로 PyAutoGUI입니다. 파이썬을 설치하신 후, VS Code 터미널 창에 pip install pyautogui라고 한 줄만 쳐서 설치하시면 모든 준비가 끝납니다.

아래 코드는 제가 엑셀에 있는 데이터를 ERP 등록 창에 입력할 때 사용하는 가장 기본적인 마우스 이동 및 키보드 입력 매크로 뼈대입니다.

파이썬 매크로 만들기 실전 코드가 작성된 VS Code 에디터 화면
대체 텍스트: 파이썬 매크로 만들기 실전 코드가 작성된 VS Code 에디터 화면

Python

import pyautogui
import time
import pyperclip

# 1. 작업 시작 전, 사람이 마우스를 세팅할 3초의 여유 주기
print("3초 뒤에 매크로 작업이 시작됩니다. 창을 준비하세요!")
time.sleep(3)

# 2. 마우스를 특정 좌표(등록 버튼 위치)로 이동 후 클릭하기
# (본인 모니터의 X, Y 좌표는 pyautogui.position() 명령어로 미리 찾을 수 있습니다)
pyautogui.moveTo(x=500, y=350, duration=0.5) 
pyautogui.click()

# 3. 한글 타이핑을 위한 실무 꿀팁 (pyperclip 활용)
# pyautogui는 기본적으로 영문만 지원하므로, 한글은 클립보드에 복사해서 Ctrl+V로 붙여넣는 것이 가장 안전합니다.
def paste_korean(text):
    pyperclip.copy(text)
    pyautogui.hotkey('ctrl', 'v')
    time.sleep(0.5)

paste_korean("대한민국 최고의 거래처")

# 4. 키보드 특수키(Tab, Enter 등) 누르기
pyautogui.press('tab') # 다음 입력 칸으로 이동
pyautogui.write('123456789') # 숫자는 바로 입력 가능

# 5. 최종 등록 버튼 누르기 (엔터키)
pyautogui.press('enter')

print("1건의 데이터가 성공적으로 등록되었습니다.")

이 코드를 for 반복문과 결합하여 엑셀 데이터를 한 줄씩 읽어오게 만들면, 저는 커피를 마시고 있는 동안 컴퓨터 혼자서 ERP 창에 데이터를 입력하고 탭을 누르고 등록 버튼을 클릭하는 진풍경이 펼쳐집니다.

현업에서 피눈물 흘리며 배운 2가지 에러 방지법 (안전장치)

파이썬 매크로 만들기는 내 키보드와 마우스의 통제권을 기계에게 넘겨주는 것이기 때문에, 자칫 잘못하면 엉뚱한 폴더를 지워버리거나 카카오톡에 이상한 문자를 마구 보내버리는 대참사가 일어날 수 있습니다. 실무에서 이 사고를 막으려면 아래 두 가지를 반드시 명심해야 합니다.

  1. 절대적인 ‘쉬는 시간(Sleep)’의 확보: 사람의 눈에는 프로그램 창이 0.1초 만에 뜨는 것 같지만, 컴퓨터 상태에 따라 창이 뜨기도 전에 매크로가 글자를 마구 타이핑해버리는 경우가 허다합니다. 클릭을 하거나 창을 넘길 때는 반드시 time.sleep(1) 처럼 1~2초씩 넉넉하게 대기 시간을 주어야 매크로가 꼬이지 않고 안정적으로 돌아갑니다.
  2. 비상 정지 버튼 (Fail-Safe) 기능: 매크로가 미쳐 날뛰며 마우스가 통제 불능 상태가 되었을 때, 당황해서 컴퓨터 전원 코드를 뽑을 필요가 없습니다. PyAutoGUI에는 기본적으로 ‘안전장치’가 걸려 있습니다. 마우스를 모니터 화면의 가장자리 네 모서리(특히 맨 위 좌측 끝) 중 한 곳으로 휙 던지듯 밀어 넣으면, 프로그램이 강제로 즉시 종료됩니다. 이 기능 덕분에 저도 수많은 위기를 넘길 수 있었습니다. 좌표 설정이나 다양한 키보드 제어 명령어가 궁금하신 분들은 [PyAutoGUI 공식 영문 메뉴얼]을 번역기로 돌려보시면 훌륭한 인사이트를 얻으실 수 있습니다.

글을 맺으며: 모니터 앞의 허수아비가 되지 말자

어떤 40대 부장님들은 마우스 매크로를 쓰는 후배들을 보며 “일은 손으로 직접 꼼꼼하게 해야지, 기계한테 맡기면 사고 난다”라고 핀잔을 주기도 합니다.

하지만 아무 생각 없이 Ctrl+C, Ctrl+V를 영혼 없이 반복하는 사람이 진짜 기계이고 허수아비입니다. 기계가 완벽하게 할 수 있는 단순 입력 작업은 철저하게 매크로에게 넘기고, 우리는 그렇게 아낀 시간 동안 ‘이 데이터의 숫자가 정말 맞는지, 이번 달 매출이 왜 떨어졌는지’를 생각하고 분석해야 합니다. 그것이 직장인의 진짜 가치입니다.

이렇게 자동화된 매크로를 통해 업무 시간을 단축하셨다면, 남는 시간 동안 팀원들에게 보낼 메일 자동화까지 세팅해 보시는 것은 어떨까요? 제가 앞서 작성했던 [파이썬 이메일 자동 발송: 40대 직장인 퇴근 앞당기는 실전 코드] 글을 참고하시면, 입력부터 보고까지 이어지는 완벽한 무인 시스템을 구축하실 수 있을 것입니다.

오늘도 낡은 사내 시스템 앞에서 마우스와 씨름하고 계신 모든 실무자 여러분의 ‘진짜 퇴근’을 응원합니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다