원문 출처는 폴리텍대학 서울강서캠퍼스 출판디자인과 | 아래한글 단순 교정 매크로 - Daum 카페
위와 같은 작업을 파이썬으로 간단히 처리해 보려고 합니다.
그 전에 원저자 분의 아이디어부터 한 번 검토해봅시다.
원문을 자세히 읽어보시면 짐작하시겠지만,
한/글 스크립트 자체에서는 엑셀파일과의 연동이 까다롭다고 생각하신
원저자 분께서 굉장히 신박한 방법을 하나 생각해 냅니다.
그것은 바로,
"메일머지"로 "스크립트를 복제" 하는 방법이었습니다.
이 방법과 관련해서 질문 주신 분도 계셨고요.
엑셀파일은 아래와 같이 작성되어 있고
해당 문구를 차례대로 전부 "찾아바꾸기"를 하고 싶은데,
여러분도 아시다시피 "찾아바꾸기"는 딱 하나의 어휘로만 실행되기 때문에
찾아바꾸기를 여러 번 해야 합니다.
별도의 툴 없이
한/글만 가지고 이런 일괄작업을 자동화하는 유일한 방법은
스크립트를 메일머지로 만들어내는 방법일 거라고 생각합니다.
이해가 안 되시는 분은 아래 이미지를 한 번 봐 주시기 바랍니다.
기본적인 찾아바꾸기 스크립트입니다.
(스크립트 창이 아닌 한/글 문서창에 복사해놓았습니다.)
위에서는 함수제목과 중괄호 하나를 삭제하고, 아래에는 닫는 중괄호 하나를 삭제한 후에.
{{처음말}}, {{바꿀말}} 을 메일머지로 변경해줍니다.
그리고 소스는 아래의 엑셀파일입니다.
아래처럼 메일머지를 실행해줍니다.
메일머지 결과는 아래와 같습니다.
이제 이 스크립트를 조금 다듬고, 서식을 손 좀 보았습니다.
아래의 코드가 최종입니다.
function OnScriptMacro_script1() {
HAction.GetDefault("AllReplace", HParameterSet.HFindReplace.HSet);
with (HParameterSet.HFindReplace) {
Direction = FindDir("AllDoc");
FindString = "아무 것";
ReplaceString = "아무것";
ReplaceCharShape.ShadeColor = RGBColor(217, 217, 9);
ReplaceMode = 1;
IgnoreMessage = 1;
FindType = 1;
}
HAction.Execute("AllReplace", HParameterSet.HFindReplace.HSet);
HAction.GetDefault("AllReplace", HParameterSet.HFindReplace.HSet);
with (HParameterSet.HFindReplace) {
Direction = FindDir("AllDoc");
FindString = "알아 주";
ReplaceString = "알아주";
ReplaceCharShape.ShadeColor = RGBColor(217, 217, 9);
ReplaceMode = 1;
IgnoreMessage = 1;
FindType = 1;
}
HAction.Execute("AllReplace", HParameterSet.HFindReplace.HSet);
HAction.GetDefault("AllReplace", HParameterSet.HFindReplace.HSet);
with (HParameterSet.HFindReplace) {
Direction = FindDir("AllDoc");
FindString = "알아 줘";
ReplaceString = "알아줘";
ReplaceCharShape.ShadeColor = RGBColor(217, 217, 9);
ReplaceMode = 1;
IgnoreMessage = 1;
FindType = 1;
}
HAction.Execute("AllReplace", HParameterSet.HFindReplace.HSet);
HAction.GetDefault("AllReplace", HParameterSet.HFindReplace.HSet);
with (HParameterSet.HFindReplace) {
Direction = FindDir("AllDoc");
FindString = "알아 줬";
ReplaceString = "알아줬";
ReplaceCharShape.ShadeColor = RGBColor(217, 217, 9);
ReplaceMode = 1;
IgnoreMessage = 1;
FindType = 1;
}
HAction.Execute("AllReplace", HParameterSet.HFindReplace.HSet);
HAction.GetDefault("AllReplace", HParameterSet.HFindReplace.HSet);
with (HParameterSet.HFindReplace) {
Direction = FindDir("AllDoc");
FindString = "알아 줄";
ReplaceString = "알아줄";
ReplaceCharShape.ShadeColor = RGBColor(217, 217, 9);
ReplaceMode = 1;
IgnoreMessage = 1;
FindType = 1;
}
HAction.Execute("AllReplace", HParameterSet.HFindReplace.HSet);
HAction.GetDefault("AllReplace", HParameterSet.HFindReplace.HSet);
with (HParameterSet.HFindReplace) {
Direction = FindDir("AllDoc");
FindString = "필요없";
ReplaceString = "필요 없";
ReplaceCharShape.ShadeColor = RGBColor(217, 217, 9);
ReplaceMode = 1;
IgnoreMessage = 1;
FindType = 1;
}
HAction.Execute("AllReplace", HParameterSet.HFindReplace.HSet);
}
분량이 긴 것 같지만, 메일머지로 복사한 분량을 전부 담아보았습니다. 양해 바랍니다.
위의 스크립트를 전체선택한 후 복사해서
한/글 스크립트 창에 붙여넣고 실행해보겠습니다.
짜잔!
끝.
마치며
찾아바꾸기를 여러 번 실행하는 방법은
(저는 파이썬에 익숙하니까) 단순히 스크립트를 for문 안에 넣고 돌리면 된다고 생각했는데,
이걸 아래아한글 하나만 가지고 엑셀파일과 연동하면서
모든 어휘에 대해 찾아바꾸기를 하는 방법이 있을 거라고는 상상조차 하지 못했습니다.
그 도구로 메일머지를 활용하는 것도 제 수준으로는 생각해내지 못할 방법이었을 것 같습니다.
원저자 분께 심심한 경의를 표합니다.
포스팅이 길어져서,
위와 같은 과정 없이 파이썬으로 (더욱 간단히) 처리하는 방법은
다음 포스팅에 이어서 소개를 드려야겠습니다.
2022.02.01 - [업무자동화/파이썬-아래아한글 자동화 기초] - [최종]아래아한글 문서교정 기능을 파이썬으로 구현해보기
행복한 하루 되세요!!!
'아래아한글 자동화 > python+hwp 중급' 카테고리의 다른 글
[최종]아래아한글 문서교정 기능을 파이썬으로 구현해보기 (0) | 2022.02.01 |
---|---|
파이썬으로 hwp파일 안에 메일머지 필드 삽입하고 실행하기 (0) | 2022.01.30 |
한컴스페이스 웹에디터로 표 만들기 자동화(selenium) (0) | 2022.01.28 |
댓글