엑셀 매크로(VBA) 보안 경고 끝! 파이썬으로 똑같은 작업 대체하기

이미지
엑셀 매크로(VBA) 보안 경고 끝! 파이썬으로 똑같은 작업 대체하기 (완성 코드 공개) "매크로가 포함된 파일을 다른 사람에게 보내면 보안 경고 때문에 매크로 사용 설정을 매번 따로 해야 한다", "VBA 코드가 회사 PC마다 다르게 작동해서 디버깅이 어렵다", "매크로를 쓰는 동료가 퇴사하면 그 파일을 아무도 수정하지 못한다"… VBA 매크로는 엑셀 안에서 바로 실행되는 장점이 있지만, 보안 정책으로 차단되거나, 회사 PC마다 설정이 달라 오작동하거나, 코드 관리가 어려운 한계가 있습니다. 이 글에서는 이 블로그에서 지금까지 소개한 파이썬 코드들이 VBA의 어떤 기능을 대체할 수 있는지 비교하고, 대표적인 매크로 작업을 파이썬으로 구현하는 방법을 소개합니다. VBA 매크로 vs 파이썬 비교 VBA 매크로 파이썬 실행 환경 엑셀 안에서만 동작 독립적으로 어디서나 동작 보안 경고 매번 발생, 차단 가능 해당 없음 배포 파일에 코드 포함 스크립트 파일만 공유 디버깅 엑셀 VBA 편집기 사용 다양한 코드 에디터 사용 가능 다른 프로그램 연동 제한적 (Win API 필요) 매우 풍부함 (이메일, 웹, DB 등) 버전 관리(깃 등) 거의 불가능 일반적인 코드처럼 관리 가능 배우는 난이도 엑셀에 특화된 문법 범용 프로그래밍 언어, 활용도 넓음 💡 언제 VBA가 더 나을까: 엑셀을 열자마자 버튼 클릭으로 즉시 실행하고 싶거나, 엑셀 전용 UI(사용자 정의 양식)가 필요한 경우는 VBA가 더 간단할 수 있습니다. 하지만 안정성, 보안, 확장성을 고려하면 대부분의 반복 작업은 파이썬이 더 유리합니다. 대표 매크로 작업 1 — 여러 시트 합치기 VBA로 흔히 작성하는 "모...

폴더 난장판 종결! 파이썬으로 파일 키워드 자동 분류하기

파이썬으로 키워드 기반 파일 자동 분류 자동화하는 모습

폴더 난장판 종결! 파이썬으로 파일 키워드 자동 분류하기 (완성 코드 공개)

"견적서_A사_최종.xlsx", "계약서_B사_검토중.pdf", "회의록_2026_05.docx", "스크린샷_20260501.png"…

다운로드 폴더나 바탕화면에 수백 개의 파일이 뒤섞여 있을 때, 필요한 파일을 찾으려면 눈이 빠질 것 같습니다. 파일명을 하나씩 보면서 '견적서' 폴더, '계약서' 폴더로 옮기는 작업은 시간도 걸리고 실수도 납니다. 파이썬을 한 번만 세팅해두면 이 분류 작업을 영구적으로 없앨 수 있습니다.


1단계: 준비물 설치

파이썬이 설치되어 있어야 합니다. 없다면 python.org에서 최신 버전을 받아 설치하세요. 설치 시 반드시 "Add Python to PATH"에 체크해야 합니다. 이 항목을 빠뜨리면 나중에 명령어가 작동하지 않습니다.

이번 스크립트는 파이썬 기본 내장 라이브러리만 사용합니다. 별도 설치가 필요 없습니다. 파이썬만 설치되어 있으면 바로 실행됩니다.

💡 이 코드로 할 수 있는 것: 폴더 안의 모든 파일을 스캔해서, 파일명에 특정 키워드가 포함된 경우 지정한 하위 폴더로 자동 이동합니다. 예를 들어 "견적서"가 파일명에 들어간 파일은 모두 📁견적서 폴더로, "계약서"가 들어간 파일은 모두 📁계약서 폴더로 자동 이동됩니다.

2단계: 완성 코드

아래 코드를 그대로 복사해서 메모장에 붙여넣고, file_sorter.py로 저장하세요. 저장 시 파일 형식은 "모든 파일", 인코딩은 UTF-8로 설정합니다.

import shutil
from pathlib import Path

# ① 설정: 분류할 파일이 있는 폴더 경로
FOLDER_PATH = r"C:\Users\내이름\Desktop\정리할폴더"   # ← 본인 경로로 수정

# ② 설정: 키워드와 이동할 폴더명 규칙 (원하는 대로 추가/수정 가능)
RULES = {
    "견적서":  "📁견적서",
    "계약서":  "📁계약서",
    "회의록":  "📁회의록",
    "보고서":  "📁보고서",
    "영수증":  "📁영수증",
    "스크린샷": "📁스크린샷",
}

# ③ 분류 실행 (이 아래는 수정하지 않아도 됩니다)
folder = Path(FOLDER_PATH)
moved = 0
skipped = 0

for file in folder.iterdir():
    if not file.is_file():
        continue   # 폴더는 건너뜀

    matched = False
    for keyword, dest_name in RULES.items():
        if keyword in file.name:
            dest_folder = folder / dest_name
            dest_folder.mkdir(exist_ok=True)   # 폴더 없으면 자동 생성

            dest_path = dest_folder / file.name
            if dest_path.exists():
                print(f"  ⚠ 중복 건너뜀: {file.name}")
                skipped += 1
            else:
                shutil.move(str(file), str(dest_path))
                print(f"  ✔ {file.name}  →  {dest_name}/")
                moved += 1
            matched = True
            break   # 첫 번째 매칭 규칙에만 적용

    if not matched:
        print(f"  - 규칙 없음 (유지): {file.name}")

print(f"\n✅ 완료! 이동: {moved}개 / 중복 건너뜀: {skipped}개")

3단계: 실행 방법

  1. 분류할 파일들을 하나의 폴더에 모아둡니다. (또는 이미 파일이 있는 폴더를 그대로 사용)
  2. 코드 ① 설정줄의 FOLDER_PATH에 그 폴더 경로를 넣습니다.
    💡 팁: 윈도우 탐색기에서 폴더를 열고 주소창을 클릭하면 경로를 바로 복사할 수 있습니다.
  3. 코드 ② 설정의 RULES에 원하는 키워드와 폴더명을 추가하거나 수정합니다.
  4. 터미널에서 아래 명령어로 실행합니다:
python file_sorter.py

정상 실행 시 터미널에 이렇게 출력됩니다:

  ✔ 견적서_A사_최종.xlsx  →  📁견적서/
  ✔ 견적서_B사_1차.xlsx   →  📁견적서/
  ✔ 계약서_C사_검토중.pdf →  📁계약서/
  ✔ 회의록_2026_05.docx  →  📁회의록/
  - 규칙 없음 (유지): 임시메모.txt

✅ 완료! 이동: 4개 / 중복 건너뜀: 0개

규칙에 해당하는 파일은 지정한 폴더로 이동하고, 어떤 키워드에도 해당하지 않는 파일은 원래 자리에 그대로 유지됩니다. 삭제는 절대 하지 않으므로 안심하고 실행할 수 있습니다.


4단계: 자주 발생하는 오류와 해결법

오류 1: FileNotFoundError

FOLDER_PATH에 입력한 경로가 잘못된 경우입니다. 경로 앞에 r을 붙였는지 확인하세요 (r"C:\..." 형태). r을 빠뜨리면 백슬래시(\)가 특수문자로 처리되어 경로 인식에 실패합니다.

오류 2: 파일이 이동되지 않고 "규칙 없음(유지)"만 출력됨

RULES에 입력한 키워드가 실제 파일명과 다를 때 발생합니다. 파일명에 공백이나 특수문자가 있는지 확인하세요. 예를 들어 파일명이 "견 적서_A사.xlsx"처럼 중간에 공백이 있으면 "견적서" 키워드로 매칭되지 않습니다.

오류 3: PermissionError

이동하려는 파일이 현재 다른 프로그램(엑셀, 워드 등)에서 열려 있을 때 발생합니다. 해당 파일을 닫은 후 다시 실행하세요.


응용: 확장자별로도 동시에 분류하고 싶다면

키워드뿐만 아니라 파일 확장자까지 함께 분류 기준으로 삼고 싶다면, RULES에 확장자를 키워드처럼 추가하면 됩니다.

RULES = {
    "견적서":  "📁견적서",
    "계약서":  "📁계약서",
    ".jpg":    "📁이미지",     # 확장자 기준 분류
    ".png":    "📁이미지",
    ".mp4":    "📁동영상",
    ".zip":    "📁압축파일",
}

파일명에 "견적서"가 포함된 .jpg 파일은 키워드 규칙이 먼저 적용되어 📁견적서로 이동합니다. 규칙 순서가 곧 우선순위이므로, 더 중요한 규칙을 위쪽에 배치하세요.

💡 매달 반복되는 정리 작업이라면: 이 .py 파일을 바탕화면에 저장해두고, 분류할 파일들을 대상 폴더에 넣은 뒤 더블클릭하면 됩니다. 한 번 만들어두면 규칙을 바꾸지 않는 한 영구적으로 재사용할 수 있습니다.

핵심 요약

  • 준비물: Python만 설치하면 됩니다. 별도 라이브러리 설치 불필요
  • 설정: FOLDER_PATH(대상 폴더)와 RULES(키워드-폴더 규칙)만 수정
  • 실행: 터미널에서 python file_sorter.py 입력
  • 결과: 키워드에 맞는 파일이 자동 분류, 해당 없는 파일은 원래 위치 유지 (삭제 없음)

이 코드를 응용하면 날짜 기준 분류, 파일 크기 기준 분류, 특정 날짜 이전 파일만 골라 보관하는 것도 가능합니다.