- 한글 문서 페이지 복사 자동화의 필요성
- 코드 구성 및 기능 설명
- 주요 명령어 분석
- 실행 결과 및 활용 방법
- 자주 발생하는 문제와 해결 방법
한글 문서 페이지 복사 자동화의 필요성
업무나 학업에서 동일한 형식의 페이지를 여러 번 복사해야 하는 상황이 자주 발생합니다.
예를 들어, 동일한 양식의 설문지를 여러 장 만들거나,
반복되는 보고서 템플릿을 복제해야 할 때가 있죠.
이런 작업을 수동으로 하면 시간이 많이 소요되고 실수할 가능성도 높아집니다.
파이썬을 활용한 한글 문서 자동화는 이러한 반복 작업을 효율적으로 처리할 수 있는 강력한 방법입니다.
특히 win32com 라이브러리를 사용하면
한글 프로그램을 제어하여 다양한 작업을 자동화할 수 있습니다.
오늘은 한글 문서의 첫 페이지를 복사하여 여러 페이지로 자동 복제하는 방법을 알아보겠습니다.
코드 구성 및 기능 설명
아래 코드는 한글 문서를 열고, 첫 페이지의 내용을 복사하여 지정한 횟수만큼 새 페이지에 붙여넣는 기능을 수행합니다.
전체 코드를 살펴본 후 각 부분의 기능을 자세히 설명하겠습니다.
import win32com.client as win32
import os, shutil
import time
def execute_hwp(hwp_visible=True):
try:
hwp = win32.gencache.EnsureDispatch('HWPFrame.HwpObject')
return hwp
except:
cache_dir = win32.gencache.GetGeneratePath()
if os.path.exists(cache_dir):
shutil.rmtree(cache_dir)
hwp = win32.gencache.EnsureDispatch('HWPFrame.HwpObject')
return hwp
finally:
if 'hwp' in locals():
hwp.XHwpWindows.Active_XHwpWindow.Visible = hwp_visible
def load_hwp(hwp, path):
if not os.path.exists(path):
print("파일이 존재하지 않습니다.")
else:
hwp.Open(path, "", "")
def copy_and_paste_pages(hwp, repeat_count=4):
hwp.Run("MoveDocBegin")
hwp.Run("SelectAll")
hwp.Run("Copy")
hwp.Run("Cancel")
for i in range(repeat_count):
hwp.Run("BreakPage")
time.sleep(1)
hwp.Run("Paste")
time.sleep(1)
if __name__ == "__main__":
hwp = execute_hwp()
load_hwp(hwp, r"C:\Users\karur\Desktop\한글 테스트 문서.hwp")
copy_and_paste_pages(hwp, 4)
코드 구성 요소
1. 필요한 라이브러리 가져오기
- win32com.client: 윈도우 COM 객체를 제어하기 위한 라이브러리
- os, shutil: 파일 및 디렉토리 관리
- time: 작업 사이에 지연 시간 추가
2. execute_hwp 함수: 한글 프로그램을 실행하고 제어 객체를 생성
- COM 객체 생성 시 캐시 문제가 발생할 경우 캐시를 삭제하고 다시 시도
- hwp_visible 매개변수로 한글 창 표시 여부 설정 가능
3. load_hwp 함수: 지정된 경로의 한글 문서 열기
- 파일 존재 여부 확인 후 열기 작업 수행
4.copy_and_paste_pages 함수:
문서의 첫 페이지를 복사하여 지정된 횟수만큼 새 페이지에 붙여넣기
- 문서 처음으로 이동 후 전체 선택 - 복사 후 선택 취소
- 지정된 횟수만큼 새 페이지 생성 및 붙여넣기
5. 메인 실행 부분: 실제 작업을 수행하는 메인 코드
- 한글 객체 생성
- 문서 열기
- 페이지 복사 함수 호출 (4회 반복)
한글 문서를 불러와 여는 방법에 대한 더 자세한 설명은 이전 블로그 포스트를 참고하시기 바랍니다. 이번 포스트에서는 페이지 복사 기능에 초점을 맞추어 설명하겠습니다.
주요 명령어 분석
copy_and_paste_pages 함수에서 사용된 주요 한글 명령어를 자세히 살펴보겠습니다.
이 명령어들은 hwp.Run() 메서드를 통해 실행되며,
한글 프로그램의 기본 기능을 자동화하는 데 사용됩니다.
MoveDocBegin
hwp.Run("MoveDocBegin")
이 명령어는 커서를 문서의 맨 처음으로 이동시킵니다.
페이지 복사 작업을 시작하기 전에 커서 위치를 초기화하는 중요한 단계입니다.
이렇게 하면 어떤 위치에서 작업을 시작하더라도 항상 문서의 처음부터 작업이 수행되어 일관된 결과를 얻을 수 있습니다.
SelectAll
hwp.Run("SelectAll")
문서의 모든 내용을 선택합니다.
이 명령어는 Ctrl+A 키 조합과 동일한 기능을 수행합니다.
첫 페이지의 모든 내용을 복사하기 위해 사용됩니다.
Copy
hwp.Run("Copy")
선택된 내용을 클립보드에 복사합니다.
이 명령어는 Ctrl+C 키 조합과 동일한 기능을 수행합니다.
SelectAll로 선택된 첫 페이지의 모든 내용을 클립보드에 저장합니다.
Cancel
hwp.Run("Cancel")
현재 선택을 취소합니다.
이 명령어는 Esc 키와 동일한 기능을 수행합니다.
텍스트 선택 상태를 해제하여 다음 작업을 준비합니다.
BreakPage
hwp.Run("BreakPage")
현재 커서 위치에 페이지 나누기를 삽입합니다.
이 명령어는 Ctrl+Enter 키 조합과 동일한 기능을 수행합니다.
새로운 페이지를 생성하여 복사된 내용을 붙여넣을 준비를 합니다.
Paste
hwp.Run("Paste")
클립보드의 내용을 현재 커서 위치에 붙여넣습니다.
이 명령어는 Ctrl+V 키 조합과 동일한 기능을 수행합니다.
새로 생성된 페이지에 복사된 내용을 붙여넣습니다.
time.sleep()
time.sleep(1)
지정된 시간(초) 동안 프로그램 실행을 일시 중지합니다. 한
글 프로그램이 명령을 처리할 시간을 확보하여 안정적인 실행을 보장합니다.
특히 페이지 나누기와 붙여넣기 작업 사이에 지연 시간을 두어 작업이 올바르게 수행되도록 합니다.
실행 결과 및 활용 방법
이 코드를 실행하면 다음과 같은 결과를 얻을 수 있습니다:
1. 지정된 한글 문서가 열립니다.
2. 문서의 첫 페이지 내용이 복사됩니다.
3. 4개의 새 페이지가 생성되고, 각 페이지에 복사된 내용이 붙여넣어집니다.
4. 최종적으로 원본 페이지 + 4개의 복제 페이지, 총 5페이지의 문서가 완성됩니다.
이 코드는 다음과 같은 상황에서 특히 유용합니다:
- 동일한 양식의 설문지나 평가지를 여러 부 생성할 때
- 반복되는 보고서 템플릿을 여러 개 만들 때
- 동일한 형식의 문서를 대량으로 생성해야 할 때
자주 발생하는 문제와 해결 방법
한글 문서 자동화 작업 시 자주 발생하는 문제점과 그 해결 방법을 알아보겠습니다.
문제 1: COM 객체 생성 오류
증상: "com_error: (-2147221005, '인터페이스가 등록되지 않았습니다.', None, None)" 오류 발생
해결 방법:
- execute_hwp 함수에서 캐시 디렉토리를 삭제하고 다시 시도하는 코드가 이 문제를 해결합니다.
- 한글 프로그램이 설치되어 있는지 확인하세요.
- 관리자 권한으로 파이썬 스크립트를 실행해보세요.
문제 2: 작업 속도가 너무 빨라 명령이 제대로 실행되지 않음
증상: 페이지 나누기나 붙여넣기가 제대로 실행되지 않는 경우
해결 방법:
- time.sleep() 함수의 대기 시간을 늘려보세요(예: 1초에서 2초로).
[ 파이썬 관련 블로그 글 목록 ]
파이썬(Python) 블로그 목록
.
'PYTHON 한글자동화' 카테고리의 다른 글
[ 한글 자동화 ] 파이썬으로 한글 문서 내 표 개수 세기: 초보자도 쉽게 따라하는 방법 (1) | 2025.06.05 |
---|---|
[ 한글 자동화 ] Python으로 한글 문서의 페이지 수 확인하기 (1) | 2025.06.02 |
[ 한글 자동화 ] 한글(HWP) 문서 이동 명령어 정리: 업무 자동화의 핵심 (1) | 2025.05.26 |
[ 한글 자동화 ] 필드 이름 목록 확인하기 : GetFieldList() (0) | 2025.05.13 |
[ 한글 자동화 ] 파이썬으로 엑셀 데이터 읽고 한글 문서에 자동 입력하기 (0) | 2025.05.13 |