2025.02.23 - [파이썬 업무 자동화/한글 문서 작업 자동화] - 파이썬 한글 문서 매크로 제작기 - 1. 개발 환경 설정(1)

 

파이썬 한글 문서 매크로 제작기 - 1. 개발 환경 설정(1)

뭔가를 시작하는 일은 막연히 '~~~를 해야지!'라는 마음으로 첫 발이 떼지지 않네요. 구체적으로 어떤 걸 만들고 싶다는 주제가 있어야 시작할 수 있는 느낌이랄까..?  그런 의미에서! 노가다..!

sunnysides.tistory.com

 

 차근차근 따라하기보다 와랄라 읽어 보고 필요한 부분만 살펴보시는 걸 추천드립니다.ㅋㅋㅋ

 

 이전에 파이썬으로 한글 문서를 다루는 라이브러리 설치와 문서를 여는 법을 익혔습니다.

 다 우리의 똑똑한 친구 챗지피티와 구글신 덕분인데 염치가 없나 봅니다만 이왕 쓰는 거 끝까지 가보도록 하겠습니다..

 

import win32com.client as win32

# 한컴 한글 실행
hwp = win32.Dispatch("HWPFrame.HwpObject")
hwp.XHwpWindows.Item(0).Visible = True  # 한글 창 보이기

# 기존 문서 열기
file_path = r"파:/일/경/로/파일명.hwp"
hwp.Open(file_path,'HWP','forceopen:true')

 

 겨우 이거 하느라 시간이 한참 걸렸네요.

 

 제가 코딩을 잘하는 편은 아니지만, 코딩에서 코드를 짜는 것보다 중요한 건 어떤 작업을 할 지 고민하는 것입니다. 알고리즘을 짠다고 하죠.

 

 우리의 목적은 코딩을 공부한다기보다 프로젝트를 만드는 것이니까요. 우리는 똑똑한 사람들이 짜 놓은 코드를 베끼기만..(?) 하는 것입니다!(당당)

 

 그런 의미에서, 이번 포스팅의 목표는

 한글 문서 양식의 본문 수정

 

입니다.

 

사실 지난 번 우리의 친구 챗지피티한테 표 내용을 바꾸는 법을 물어봤죠.

그림 1. 챗지피티 재탕1
그림 2. 챗지피티 재탕2

 

지난 1탄에서 우리는 기존 문서 여는 방법은 익혔기 때문에, 추가 수정이 필요했습니다.

그림 3. 수정된 코드.

 

그런데, 표 수정은 커녕 커서가 이동하지도 않더라구요..

그림 4. 에러 코드.

 

도와줘 챗지피티!

그림 5. 똑똑한 건지 멍청한 건지..

 

수정된 코드를 써도 다시 문제가 생겼습니다. 지난 번의 악몽... 질문이 도돌이표가 돼 버리니 따로 해결해 봅시다.

 

이럴 땐 차근차근 문제가 어디서 생겼는 지 확인할 필요가 있습니다.

 

import win32com.client as win32

# 한컴 한글 실행
hwp = win32.Dispatch("HWPFrame.HwpObject")
hwp.XHwpWindows.Item(0).Visible = True  # 한글 창 보이기

# 기존 문서 열기
file_path = r"D:/한글 양식 자동화/양식.hwp"
hwp.Open(file_path,'HWP','forceopen:true')

 

일단 요까지는 잘 굴러가는 걸 확인했습니다.

 

그렇다면 표 안의 내용을 변경하기 앞서, 원하는 지시(커서를 이동하고 표를 선택하는 것)가 제대로 이행되는지 살펴봐야 합니다.

# 커서를 문서의 처음으로 이동 (표 찾기 전에 안전한 위치로 이동)
hwp.HAction.Run("MoveTopLevelBegin")

# 첫 번째 표 선택
hwp.HAction.Run("TableCellBlock")  # 표 내부 선택
hwp.HAction.Run("TableSelect")  # 표 전체 선택

# 커서를 첫 번째 셀로 이동
hwp.HAction.Run("TableCellBlock")  # 다시 표 내부 선택
hwp.HAction.Run("TableLeftCell")  # 왼쪽 상단 셀 선택

# 텍스트 입력
# hwp.InsertText(r"hihihi")

# # 새로운 파일 이름으로 저장
# new_file_path = r"C:\경로\새로운_파일명.hwp"
# hwp.SaveAs(new_file_path, "HWP")

# # 한컴 한글 종료
# hwp.Quit()

 

파이썬에서 #이 붙는 건 해당 줄을 없는 셈 치겠다(주석 처리)는 의미입니다.

 

시킨 대로 커서가 잘 이동하는지 보기 위해 뒷 부분을 전부 날렸습니다.

 

그림 6. 아니 커서가 왜 그대로야.

 

이럴 수가.. 커서가 이동하지 않습니다. 이렇다면 우리는 이렇게 어려운 방식을 버려야 합니다. 왜냐하면 우리는 HAction이라는 명령어를 어떻게 쓸 수 있는지, 문서를 어디서 찾아야 하는지 같은 고급 기술을 익히기엔 시간이 부족합니다. 빨리 놀러 나가야 합니다.

 

그림 7. 구관이 명관.

 

구글로 돌아왔습니다. 더 개꿀 빠는 방법을 가르쳐 달란 말이야!

 

라는 열망에 찾았습니다.

호다닥 프로젝트를 달성하고 싶은 분들이 아닌 진득하게 자세한 사용법을 익히고 싶은 분은 요기로 가시면 됩니다.

https://wikidocs.net/257896

 

01-3 텍스트 입력

이번 챕터에서는 본격적으로 문서에 텍스트입력을 해 보겠습니다. 먼저 터미널에서 `jupyter notebook` 명령어로 주피터노트북을 실행한 후, 아래 코드 두 줄을 실행…

wikidocs.net

와 갓일코.. 일갓... 일코님 고맙습니다. 

저보다 뛰어난 분이 계십니다. 여러분 여기로 보러 가세요. 제 글보다 좋습니다. 저도 여기서 배웠습니다.

 

한글에는 누름틀이라는 기능이 있군요. 처음 알았습니다.

 

각설하고, 이번 포스팅의 목표로 다시 돌아오겠습니다.

 한글 문서 양식의 본문 수정 (데자뷰 아님)

그림 8. 누름틀 필드 입력 창

 

한글 문서에서 원하는 곳에 커서를 두고 컨트롤+k+e를 누르면 요런 창이 뜹니다. 순서대로 눌러도 되네요.

 

적는 게 많아서 뭐가 뭔지 헷갈립니다. 그냥 순서대로 호잇,테스트,field라고 구분할 수 있게 다른 값으로 넣었어요. 필드 이름을 코드에서 입력하는데, 호옥시나 한글을 못 인식할까봐 영어로 적었습니다.

그림 9. 짜잔

 

예시로 적히는 글이 안내문이고, 필드 이름이 field로 설정이 되나 봅니다. 메모 내용은 뭐지.. 쓸 일 없으니 패쓰~

 

그림 10. 누름틀 내용란

생성된 누름틀을 클릭하면 빈 칸으로 변하고 한글 창 맨 밑에 보면 (B1): 필드 [field]라고 필드 이름이 나오네요.

다시 코드로 돌아가보겠습니다

그림 11. 오 바꾸기 성공

 

휴 이번엔 진짜 성공했습니다. 수신자를 바꾸고 싶은데, 성공적으로 까꿍으로 바꿨네요.

 

import win32com.client as win32

hwp = win32.Dispatch("HWPFrame.HwpObject")
hwp.XHwpWindows.Item(0).Visible = True  # 한글 창 보이기 (필요 시 False로 설정)


file_path = r"D:/한글 양식 자동화/양식.hwp"
hwp.Open(file_path,'HWP','forceopen:true')

hwp.PutFieldText("field",r' 까꿍')
# hwp.PutFieldText("field1",r' 까꿍')

 

 여러 영역의 글자를 바꾸고 싶으면 누름틀을 추가하시고, 필드 이름을 field1, field2 이런 식으로 추가해서 마지막 줄과 같이 수정하시면 됩니다.

 

 본문에서는 field라는 누름틀 하나만 만들었지만 원하시면 field1이라는 이름을 가진 누름틀을 새로 만들고, 맨 밑에 줄을 주석 해제 처리 하는 식으로~~~

 

 

 

다음엔 엑셀로 갖고 있는 회사명을 쭈루룩 집어넣는 방법을 적어보도록 하겠습니다.

+ Recent posts