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

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

복사한 내용 사라져서 당황했다면! 파이썬으로 클립보드 자동 기록하기

복사한 내용 사라져서 당황했다면! 파이썬으로 클립보드 자동 기록하기 (완성 코드 공개)

파이썬으로 클립보드 복사 기록을 자동으로 관리하는 모습


"방금 복사한 거래처 주소를 다른 걸 복사하다가 날려버렸다", "자주 쓰는 인사말, 계좌번호, 이메일 서명을 매번 다시 타이핑한다", "오늘 하루 동안 복사했던 내용들을 나중에 다시 확인하고 싶다"…

윈도우 기본 클립보드 기록(Win+V)은 재부팅하면 사라지고 검색 기능도 제한적입니다. 파이썬을 한 번만 세팅해두면 클립보드에 복사되는 모든 텍스트를 백그라운드에서 자동으로 감시하고 영구 저장하며, 자주 쓰는 문구는 즐겨찾기로 등록해 빠르게 다시 사용할 수 있습니다.


1단계: 준비물 설치

파이썬이 설치되어 있어야 합니다. 없다면 python.org에서 최신 버전을 받아 설치하세요. 설치 시 반드시 "Add Python to PATH"에 체크해야 합니다.

클립보드 감시에 필요한 라이브러리를 설치합니다. 터미널(윈도우: CMD 또는 파워셸)을 열고 아래 명령어를 실행하세요:

pip install pyperclip

pyperclip은 클립보드의 내용을 읽고 쓰는 라이브러리입니다. 별도 설정 없이 윈도우·맥·리눅스 모두 지원합니다.

💡 이 코드로 할 수 있는 것: 클립보드에 복사되는 모든 텍스트를 시간 순서대로 자동 기록, 중복 항목 자동 제거, 텍스트 파일로 영구 저장, 자주 쓰는 문구를 즐겨찾기로 등록해 번호만 입력하면 즉시 클립보드에 다시 복사하는 기능을 제공합니다.

2단계: 완성 코드 — 클립보드 자동 기록

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

import pyperclip
import time
from pathlib import Path
from datetime import datetime

# ① 설정
LOG_FILE     = r"C:\Users\내이름\Desktop\클립보드기록.txt"   # ← 기록 저장 경로
MAX_LENGTH   = 500    # ← 한 항목당 저장할 최대 글자 수 (너무 긴 복사 내용 자르기)
CHECK_INTERVAL = 0.5  # ← 클립보드 확인 주기 (초)

# ② 클립보드 기록 함수
def log_clipboard(text):
    now = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
    truncated = text[:MAX_LENGTH] + ("..." if len(text) > MAX_LENGTH else "")

    with open(LOG_FILE, "a", encoding="utf-8") as f:
        f.write(f"\n[{now}]\n{truncated}\n{'-'*40}")

    preview = truncated.replace("\n", " ")[:50]
    print(f"  ✔ [{now}] 기록: {preview}")

# ③ 클립보드 감시 시작
print(f"▶ 클립보드 감시 시작")
print(f"  저장 위치: {LOG_FILE}")
print(f"  종료하려면 Ctrl+C를 누르세요.\n")

last_text = ""
try:
    while True:
        current_text = pyperclip.paste()

        # 새로운 내용이 복사되었고, 빈 값이 아닐 때만 기록
        if current_text != last_text and current_text.strip():
            log_clipboard(current_text)
            last_text = current_text

        time.sleep(CHECK_INTERVAL)

except KeyboardInterrupt:
    print("\n  클립보드 감시를 종료합니다.")

3단계: 완성 코드 — 즐겨찾기 빠른 붙여넣기

자주 쓰는 문구(인사말, 계좌번호, 이메일 서명 등)를 번호로 등록해두고 빠르게 다시 복사하는 도구입니다. 아래 코드를 quick_paste.py로 저장하세요.

import pyperclip

# ① 즐겨찾기 문구 등록 (원하는 만큼 추가)
FAVORITES = {
    "1": ("인사말", "안녕하세요. IT꿀팁 연구소입니다. 문의 주셔서 감사합니다."),
    "2": ("계좌번호", "국민은행 123456-78-901234 (예금주: 홍길동)"),
    "3": ("이메일서명", "감사합니다.\n\nIT꿀팁 연구소\nhowtothea.com"),
    "4": ("업무시작", "안녕하세요, 오늘 업무 시작하겠습니다."),
    "5": ("퇴근인사", "오늘 하루도 고생 많으셨습니다. 내일 뵙겠습니다."),
}

# ② 목록 출력
print("=" * 40)
print("  📋 빠른 붙여넣기 목록")
print("=" * 40)
for key, (name, _) in FAVORITES.items():
    print(f"  [{key}] {name}")
print("=" * 40)

# ③ 번호 선택 및 클립보드 복사
choice = input("\n복사할 번호를 입력하세요: ").strip()

if choice in FAVORITES:
    name, text = FAVORITES[choice]
    pyperclip.copy(text)
    print(f"\n✅ '{name}' 클립보드에 복사 완료! Ctrl+V로 붙여넣으세요.")
else:
    print("\n✘ 잘못된 번호입니다.")

4단계: 실행 방법

클립보드 자동 기록:

  1. 코드 ① 설정의 LOG_FILE에 기록을 저장할 경로를 입력합니다.
  2. 터미널에서 실행하고 계속 실행 상태로 둡니다:
python clipboard_logger.py

실행 중 평소처럼 텍스트를 복사하면 자동으로 기록됩니다:

▶ 클립보드 감시 시작
  저장 위치: C:\Users\내이름\Desktop\클립보드기록.txt
  종료하려면 Ctrl+C를 누르세요.

  ✔ [2026-06-29 14:23:05] 기록: A주식회사 견적 문의 관련하여 확인 부탁드립니다
  ✔ [2026-06-29 14:25:18] 기록: 010-1234-5678

즐겨찾기 빠른 붙여넣기:

python quick_paste.py

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

오류 1: ModuleNotFoundError: No module named 'pyperclip'

설치가 제대로 되지 않은 경우입니다. 아래 명령어로 다시 시도하세요.

python -m pip install pyperclip

오류 2: 같은 내용이 여러 번 중복 기록됨

다른 프로그램이 클립보드를 주기적으로 갱신하는 경우 발생할 수 있습니다. 코드에 이미 last_text 비교로 중복 방지 로직이 포함되어 있습니다. 그래도 중복된다면 CHECK_INTERVAL 값을 늘려보세요.

오류 3: 이미지나 파일을 복사하면 오류가 남

pyperclip은 텍스트만 지원합니다. 이미지나 파일을 복사하면 PyperclipException이 발생할 수 있습니다. 아래처럼 예외 처리를 추가하세요:

try:
    current_text = pyperclip.paste()
except Exception:
    time.sleep(CHECK_INTERVAL)
    continue

응용: PC 시작 시 자동으로 클립보드 감시 실행하기

PC를 켤 때마다 클립보드 기록이 자동으로 시작되게 하려면 윈도우 시작 프로그램에 등록합니다.

  1. 윈도우 키 + R → shell:startup 입력 후 Enter
  2. 빈 곳에서 마우스 오른쪽 클릭 → "새로 만들기""바로 가기"
  3. 항목 위치에 아래 형식으로 입력합니다:
pythonw "C:\Users\내이름\Desktop\clipboard_logger.py"
💡 이전 게시글과 결합하면: pyautogui 윈도우 자동화 편과 결합하면 클립보드 즐겨찾기 문구를 자동으로 붙여넣는 매크로를 만들 수 있고, 알람 자동 실행 편과 결합하면 매일 클립보드 기록을 정리해서 요약 받는 것도 가능합니다.

핵심 요약

  • 준비물: Python + pyperclip 설치 (pip install pyperclip)
  • 자동 기록: LOG_FILE 설정 후 clipboard_logger.py 실행, 계속 실행 상태 유지
  • 빠른 붙여넣기: FAVORITES에 자주 쓰는 문구 등록 후 quick_paste.py로 번호 선택
  • 자동 시작: shell:startup 폴더에 등록하면 PC 켤 때마다 자동 실행
  • 결과: 복사한 모든 텍스트가 시간순으로 영구 기록, 자주 쓰는 문구는 번호로 즉시 재사용

이 코드를 응용하면 클립보드 내용에 특정 키워드가 포함될 때 자동으로 알림을 보내거나, 복사한 URL만 따로 모아 정리하는 것도 가능합니다.

이 블로그의 인기 게시물

느려진 구글 크롬 속도 2배 빨라지는 3가지 설정 방법 (2026년 최신 가이드)

카카오톡 용량 줄이기! 대화방 파일 삭제로 스마트폰 용량 확보법 (1분 해결)

업무 속도 3배 빨라지는 윈도우 기본 캡처 도구 단축키 및 200% 활용 꿀팁