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탄에서 우리는 기존 문서 여는 방법은 익혔기 때문에, 추가 수정이 필요했습니다.
그런데, 표 수정은 커녕 커서가 이동하지도 않더라구요..
도와줘 챗지피티!
수정된 코드를 써도 다시 문제가 생겼습니다. 지난 번의 악몽... 질문이 도돌이표가 돼 버리니 따로 해결해 봅시다.
이럴 땐 차근차근 문제가 어디서 생겼는 지 확인할 필요가 있습니다.
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()
파이썬에서 #이 붙는 건 해당 줄을 없는 셈 치겠다(주석 처리)는 의미입니다.
시킨 대로 커서가 잘 이동하는지 보기 위해 뒷 부분을 전부 날렸습니다.
이럴 수가.. 커서가 이동하지 않습니다. 이렇다면 우리는 이렇게 어려운 방식을 버려야 합니다. 왜냐하면 우리는 HAction이라는 명령어를 어떻게 쓸 수 있는지, 문서를 어디서 찾아야 하는지 같은 고급 기술을 익히기엔 시간이 부족합니다. 빨리 놀러 나가야 합니다.
구글로 돌아왔습니다. 더 개꿀 빠는 방법을 가르쳐 달란 말이야!
라는 열망에 찾았습니다.
호다닥 프로젝트를 달성하고 싶은 분들이 아닌 진득하게 자세한 사용법을 익히고 싶은 분은 요기로 가시면 됩니다.
01-3 텍스트 입력
이번 챕터에서는 본격적으로 문서에 텍스트입력을 해 보겠습니다. 먼저 터미널에서 `jupyter notebook` 명령어로 주피터노트북을 실행한 후, 아래 코드 두 줄을 실행…
wikidocs.net
와 갓일코.. 일갓... 일코님 고맙습니다.
저보다 뛰어난 분이 계십니다. 여러분 여기로 보러 가세요. 제 글보다 좋습니다. 저도 여기서 배웠습니다.
한글에는 누름틀이라는 기능이 있군요. 처음 알았습니다.
각설하고, 이번 포스팅의 목표로 다시 돌아오겠습니다.
한글 문서 양식의 본문 수정 (데자뷰 아님)
한글 문서에서 원하는 곳에 커서를 두고 컨트롤+k+e를 누르면 요런 창이 뜹니다. 순서대로 눌러도 되네요.
적는 게 많아서 뭐가 뭔지 헷갈립니다. 그냥 순서대로 호잇,테스트,field라고 구분할 수 있게 다른 값으로 넣었어요. 필드 이름을 코드에서 입력하는데, 호옥시나 한글을 못 인식할까봐 영어로 적었습니다.
예시로 적히는 글이 안내문이고, 필드 이름이 field로 설정이 되나 봅니다. 메모 내용은 뭐지.. 쓸 일 없으니 패쓰~
생성된 누름틀을 클릭하면 빈 칸으로 변하고 한글 창 맨 밑에 보면 (B1): 필드 [field]라고 필드 이름이 나오네요.
다시 코드로 돌아가보겠습니다
휴 이번엔 진짜 성공했습니다. 수신자를 바꾸고 싶은데, 성공적으로 까꿍으로 바꿨네요.
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이라는 이름을 가진 누름틀을 새로 만들고, 맨 밑에 줄을 주석 해제 처리 하는 식으로~~~
다음엔 엑셀로 갖고 있는 회사명을 쭈루룩 집어넣는 방법을 적어보도록 하겠습니다.
'코딩 프로젝트 > 파이썬-한글 매크로 프로그램 제작' 카테고리의 다른 글
파이썬 한글 매크로 프로그램 제작 (feat. ChatGPT) - 6. 실행 파일 변환 (0) | 2025.03.01 |
---|---|
파이썬 한글 매크로 프로그램 제작 (feat. ChatGPT) - 5. 코드 합치기 (0) | 2025.03.01 |
파이썬 한글 매크로 프로그램 제작 (feat. ChatGPT) - 4. 한글 문서 pdf로 추출하기 (0) | 2025.02.25 |
파이썬 한글 매크로 프로그램 제작 (feat. ChatGPT) - 3. 회사명 갖고 오기 (2) | 2025.02.25 |
파이썬 한글 매크로 프로그램 제작 (feat. ChatGPT) - 1. 개발 환경 설정 (0) | 2025.02.23 |