엑셀 매크로(VBA) 보안 경고 끝! 파이썬으로 똑같은 작업 대체하기
"방금 복사한 거래처 주소를 다른 걸 복사하다가 날려버렸다", "자주 쓰는 인사말, 계좌번호, 이메일 서명을 매번 다시 타이핑한다", "오늘 하루 동안 복사했던 내용들을 나중에 다시 확인하고 싶다"…
윈도우 기본 클립보드 기록(Win+V)은 재부팅하면 사라지고 검색 기능도 제한적입니다. 파이썬을 한 번만 세팅해두면 클립보드에 복사되는 모든 텍스트를 백그라운드에서 자동으로 감시하고 영구 저장하며, 자주 쓰는 문구는 즐겨찾기로 등록해 빠르게 다시 사용할 수 있습니다.
파이썬이 설치되어 있어야 합니다. 없다면 python.org에서 최신 버전을 받아 설치하세요. 설치 시 반드시 "Add Python to PATH"에 체크해야 합니다.
클립보드 감시에 필요한 라이브러리를 설치합니다. 터미널(윈도우: CMD 또는 파워셸)을 열고 아래 명령어를 실행하세요:
pip install pyperclip
pyperclip은 클립보드의 내용을 읽고 쓰는 라이브러리입니다. 별도 설정 없이 윈도우·맥·리눅스 모두 지원합니다.
💡 이 코드로 할 수 있는 것: 클립보드에 복사되는 모든 텍스트를 시간 순서대로 자동 기록, 중복 항목 자동 제거, 텍스트 파일로 영구 저장, 자주 쓰는 문구를 즐겨찾기로 등록해 번호만 입력하면 즉시 클립보드에 다시 복사하는 기능을 제공합니다.
아래 코드를 그대로 복사해서 메모장에 붙여넣고, 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 클립보드 감시를 종료합니다.")
자주 쓰는 문구(인사말, 계좌번호, 이메일 서명 등)를 번호로 등록해두고 빠르게 다시 복사하는 도구입니다. 아래 코드를 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✘ 잘못된 번호입니다.")
클립보드 자동 기록:
LOG_FILE에 기록을 저장할 경로를 입력합니다.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
오류 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를 켤 때마다 클립보드 기록이 자동으로 시작되게 하려면 윈도우 시작 프로그램에 등록합니다.
shell:startup 입력 후 Enterpythonw "C:\Users\내이름\Desktop\clipboard_logger.py"
💡 이전 게시글과 결합하면: pyautogui 윈도우 자동화 편과 결합하면 클립보드 즐겨찾기 문구를 자동으로 붙여넣는 매크로를 만들 수 있고, 알람 자동 실행 편과 결합하면 매일 클립보드 기록을 정리해서 요약 받는 것도 가능합니다.
이 코드를 응용하면 클립보드 내용에 특정 키워드가 포함될 때 자동으로 알림을 보내거나, 복사한 URL만 따로 모아 정리하는 것도 가능합니다.