안녕하세요! 일상의 코딩님!
매번 올려주신 영상 유용하게 보고 있는 구독자입니다! 다름이 아니라, 코딩님 블로그를 보니 한글에서 메일머지기능과 매크로를 이용한 여러 단어 찾아바꾸기 자동교정하는 법 올려주셨더라구요...!
ㅎㅎ 어깨와 팔의 심신이 고달픈 차에 좋은 정보를 알게 되어 매크로 함수를 카피해서 적용을 해보려고 했는데...이 분야가 생소해서 글이 잘 이해가 안가더라구요...하하 물론...오류를 내고... 적용엔 실패했습니다...ㅠㅠ
혹시 언제 시간나실 때! 채널에 적용 방법 공유해주시면 좋을 것 같아서 댓글 남겨봅니다! 한글을 이용한 문서 편집자들에겐 참 좋은 정보가 될 것 같아서요! ㅎㅎ 항상 좋은 정보 감사드리고 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" 파일을 실행하면 됩니다.
유용하게 사용해 주시기 바랍니다.
행복한 하루 되세요!
국내 유일의 파이썬+한컴오피스 업무자동화 입문강의
'아래아한글 자동화 > python+hwp 중급' 카테고리의 다른 글
[영상] 아래아한글 표 캡션 일괄수정하는 파이썬 코드 (1) | 2023.01.16 |
---|---|
[QnA] 엑셀의 날짜 칼럼을 한/글로 옮길 때 서식 정하는 방법 (0) | 2022.12.28 |
현재 조판부호가 보이는 상태인지 확인하는 함수 만들기 (2) | 2022.12.27 |
댓글