안녕하세요! 일상의 코딩님!
매번 올려주신 영상 유용하게 보고 있는 구독자입니다! 다름이 아니라, 코딩님 블로그를 보니 한글에서 메일머지기능과 매크로를 이용한 여러 단어 찾아바꾸기 자동교정하는 법 올려주셨더라구요...!
ㅎㅎ 어깨와 팔의 심신이 고달픈 차에 좋은 정보를 알게 되어 매크로 함수를 카피해서 적용을 해보려고 했는데...이 분야가 생소해서 글이 잘 이해가 안가더라구요...하하 물론...오류를 내고... 적용엔 실패했습니다...ㅠㅠ
혹시 언제 시간나실 때! 채널에 적용 방법 공유해주시면 좋을 것 같아서 댓글 남겨봅니다! 한글을 이용한 문서 편집자들에겐 참 좋은 정보가 될 것 같아서요! ㅎㅎ 항상 좋은 정보 감사드리고 2023년 복 많이 받으세요!!!
우선 실습을 진행하기 위한 파일을 다운받아주세요.
압축을 해제해보시면 엑셀파일 한 개, 한/글 파일 한 개가 있습니다.

첨부한 엑셀파일을 열어보면 아래와 같은 내용입니다. 교정표입니다.

첨부한 한/글 파일은 우리가 교정하고자 하는 문서입니다.

이번에 만들어볼 문서교정 프로그램은,
이름은 거창하지만 사실 간단한 프로그램입니다.
엑셀파일의 교정표를 파이썬으로 불러온 후에
바로 한/글의 "찾아바꾸기"를 반복실행해서 교정표에 해당하는 모든 단어를 수정하는 프로그램입니다.
이를 위해서 크게 아래의 세 가지 과정으로 나누어 파이썬 코드작성을 진행해보겠습니다.
1. 엑셀과 한/글을 열고 해당 파일을 불러온다.
2. 엑셀 교정표 내용을 사전(dict) 자료형으로 파이썬으로 가져온다.
3. 교정표(dict)의 아이템을 가지고 순차적으로 한/글 찾아바꾸기 기능에 적용한다.
그럼 첫 번째 단계부터 시작해보겠습니다.
1~2. 엑셀과 한/글을 파이썬으로 열고 파일 불러온 후, dict자료형 만들기
아래 영상에서는 (너무 끊기는 느낌이 있어) 2번 과정까지 한 번에 진행했습니다.
동영상 서비스가 종료되어 해당 콘텐츠를 재생할 수 없습니다.
위 영상에서 작성한 코드는 아래와 같습니다.
import win32com.client as win32
# 엑셀 실행
excel = win32.gencache.EnsureDispatch("Excel.Application")
excel.Visible = True
wb = excel.Workbooks.Open(r"C:\Users\smj02\Desktop\오빠는_아무_것도_몰라\교정리스트.xlsx")
ws = wb.Worksheets(1)
data = ws.UsedRange()[1:]
data = {i: j for (i, j) in data}
hwp = win32.gencache.EnsureDispatch("hwpframe.hwpobject")
hwp.Open(r"C:\Users\smj02\Desktop\오빠는_아무_것도_몰라\오빠는_아무_것도_몰라.hwp")
3. 교정표(dict)를 통해 한/글 찾아바꾸기 실행
동영상 서비스가 종료되어 해당 콘텐츠를 재생할 수 없습니다.
위 영상에서 작성한 코드는 아래와 같습니다.
경미한 보정을 하였습니다.
import os
import win32com.client as win32
# 엑셀 실행
excel = win32.gencache.EnsureDispatch("Excel.Application")
excel.Visible = True
# wb = excel.Workbooks.Open(r"C:\Users\smj02\Desktop\오빠는_아무_것도_몰라\교정리스트.xlsx")
wb = excel.Workbooks.Open(os.path.join(os.getcwd(), "교정리스트.xlsx"))
ws = wb.Worksheets(1)
# 엑셀 데이터 추출 및 사전형으로 변환
data = ws.UsedRange()[1:]
data = {i: j for (i, j) in data}
# 엑셀 종료
excel.Quit()
# 한/글 실행
hwp = win32.gencache.EnsureDispatch("hwpframe.hwpobject")
hwp.XHwpWindows.Item(0).Visible = True
# hwp.Open(r"C:\Users\smj02\Desktop\오빠는_아무_것도_몰라\오빠는_아무_것도_몰라.hwp")
hwp.Open(os.path.join(os.getcwd(), "오빠는_아무_것도_몰라.hwp"))
# 자동교정 매크로를 파이썬 함수로 정의
def 자동교정(target):
hwp.HAction.GetDefault("AllReplace", hwp.HParameterSet.HFindReplace.HSet)
hwp.HParameterSet.HFindReplace.Direction = hwp.FindDir("AllDoc")
hwp.HParameterSet.HFindReplace.FindString = target
hwp.HParameterSet.HFindReplace.ReplaceString = data[target]
hwp.HParameterSet.HFindReplace.ReplaceMode = 1
hwp.HParameterSet.HFindReplace.IgnoreMessage = 1
hwp.HParameterSet.HFindReplace.FindType = 1
hwp.HAction.Execute("AllReplace", hwp.HParameterSet.HFindReplace.HSet)
# 한/글 문서 자동교정 실행
for i in data.keys():
자동교정(i)
4. 파일선택 다이얼로그 창 붙여보기
일일이 코드의 파일경로를 수정하면서 프로그램 쓰기 귀찮으니까
프로그램 시작할 때 엑셀파일 교정표와 한/글 문서를 고를 수 있게
파일선택 다이얼로그를 붙여보았습니다.
코드 구조까지 조금 보완하여 완성한 코드는 아래와 같습니다.
import os
import tkinter as tk
from tkinter.filedialog import askopenfilename
import win32com.client as win32
def 엑셀실행(filepath):
excel = win32.gencache.EnsureDispatch("Excel.Application")
excel.Visible = True
wb = excel.Workbooks.Open(filepath)
ws = wb.Worksheets(1)
return excel, wb, ws
def 사전형변환(data):
data = {i: j for (i, j) in data[1:]}
return data
def 엑셀종료():
excel.Quit()
def 한글실행(filepath):
hwp = win32.gencache.EnsureDispatch("hwpframe.hwpobject")
hwp.XHwpWindows.Item(0).Visible = True
hwp.Open(filepath)
return hwp
def 자동교정(target):
hwp.HAction.GetDefault("AllReplace", hwp.HParameterSet.HFindReplace.HSet)
hwp.HParameterSet.HFindReplace.Direction = hwp.FindDir("AllDoc")
hwp.HParameterSet.HFindReplace.FindString = target
hwp.HParameterSet.HFindReplace.ReplaceString = 엑셀데이터[target]
hwp.HParameterSet.HFindReplace.ReplaceMode = 1
hwp.HParameterSet.HFindReplace.IgnoreMessage = 1
hwp.HParameterSet.HFindReplace.FindType = 1
hwp.HAction.Execute("AllReplace", hwp.HParameterSet.HFindReplace.HSet)
def 일괄교정(data):
for i in data.keys():
자동교정(i)
if __name__ == '__main__':
root = tk.Tk() # GUI 실행하고
root.withdraw() # GUI 콘솔창 안나타나게
엑셀파일_경로 = askopenfilename(title="교정표 엑셀 파일을 선택해주세요.",
initialdir=os.getcwd(),
filetypes=[("엑셀파일", "*.xls *.xlsx *.hcell")])
한글파일_경로 = askopenfilename(title="교정한 한/글 파일을 선택해주세요.",
initialdir=os.getcwd(),
filetypes=[("아래아한글파일", "*.hwp *.hwpx")])
root.destroy() # GUI 종료
excel, wb, ws = 엑셀실행(엑셀파일_경로)
엑셀데이터 = 사전형변환(ws.UsedRange())
엑셀종료()
hwp = 한글실행(한글파일_경로)
일괄교정(엑셀데이터)
아래는 실행화면입니다.
동영상 서비스가 종료되어 해당 콘텐츠를 재생할 수 없습니다.
컴파일한 프로그램과 소스코드, 샘플파일을 첨부합니다.
사용법은 동일한 폴더 안에 문서교정표 엑셀파일과, 교정할 문서를 함께 넣고
"문서교정기.exe" 파일을 실행하면 됩니다.
유용하게 사용해 주시기 바랍니다.
행복한 하루 되세요!
국내 유일의 파이썬+한컴오피스 업무자동화 입문강의
움짤로 빠르게 배우는 파이썬-아래아한글 자동화 레시피 - 인프런 | 강의
파이썬으로 아래아한글을 다루는 짧은 예제코드들을 소개하고, 중간중간의 결과를 GIF로 보여드립니다. 동영상 강의가 아니지만 오히려 빠르게 배울 수 있고, 따라하기도 쉽습니다., - 강의 소개
www.inflearn.com
'아래아한글 자동화 > python+hwp 중급' 카테고리의 다른 글
| [영상] 아래아한글 표 캡션 일괄수정하는 파이썬 코드 (1) | 2023.01.16 |
|---|---|
| [QnA] 엑셀의 날짜 칼럼을 한/글로 옮길 때 서식 정하는 방법 (0) | 2022.12.28 |
| 현재 조판부호가 보이는 상태인지 확인하는 함수 만들기 (3) | 2022.12.27 |
댓글