본문 바로가기
아래아한글 자동화/python+hwp 중급

[QnA] 한/글에서 녹화해 둔 매크로를 파이썬에서 변환없이 실행하는 방법은 없을까요?

by 일코 2021. 4. 15.

안녕하세요?

(요즘 PySide6 튜토리얼을 작성하면서 다시 다나까체를 사용하게 되었습니다. 저도 헷갈리네요;;; 근데 이방법 저방법 써보고 알게 된 게, 존댓말을 쓴다고 포스팅 생산성이 떨어진다거나 하지는 않는 것 같더라고요.. 하여튼)

 

이번 포스팅은 제목대로, 한/글에서 녹화한 매크로를 파이썬 코드로 변환하지 않고 바로 실행하는 방법이 없는지 메일로 질문 주신 분께 답변 남겨드리면서, 포스팅도 남겨봅니다.

 

hwp.RunScriptMacro(FunctionName="OnScriptMacro_script5()", uMacroType=0, uScriptType=1)

코드는 위와 같습니다.

 

구체적인 사용법은 아래 남겨드리지만, 별 영양가 없으므로 안 보시면 좋겠습니다.


아래아한글에서 "Hello World"를 입력하고 엔터를 치는 스크립트(JS)는 아래와 같습니다.

function OnScriptMacro_script5()
{
	HAction.GetDefault("InsertText", HParameterSet.HInsertText.HSet);
	HParameterSet.HInsertText.Text = "Hello World";
	HAction.Execute("InsertText", HParameterSet.HInsertText.HSet);
	HAction.Run("BreakPara");
}

저는 5번 슬롯에 스크립트매크로 녹화를 했고, 스크립트이름을 별도로 바꾸지 않아서 함수명이 "OnScriptMacro_script5()" 입니다.

 

이걸 파이썬 win32로 변환하는 과정은 아래와 같습니다.

1. HAction과 HParameterSet 앞에 "hwp."을 붙인다.

2. 중괄호를 포함하여 바깥부분을 모두 삭제하고, 들여쓰기 부분만 남긴다.

3. 세미콜론을 지운다.

간단한 작업이지만 번거롭기도 합니다.

변환하고 나면 이런 코드가 되네요.

hwp.HAction.GetDefault("InsertText", hwp.HParameterSet.HInsertText.HSet)
hwp.HParameterSet.HInsertText.Text = "Hello World"
hwp.HAction.Execute("InsertText", hwp.HParameterSet.HInsertText.HSet)
hwp.HAction.Run("BreakPara")

파이참으로 실행해볼까요?ㅎ 선택한 코드만 콘솔에서 실행하는 방법은 Shift-Alt-E죠.

다행히 잘 실행이 됩니다.

 

근데 녹화한 코드를 번거롭게 변환하는 과정을 거치지 않고 바로 실행할 수 있다면?

아래아한글 컨트롤 API문서를 열어보겠습니다.

공식문서 중 HwpCtrl API.hwp의 첫 페이지

HwpCtrl API.hwp 파일에서 HwpCtrl Object의 메소드 70번을 보시면(RunScriptMacro로 검색하셔도 됩니다.),

RunScriptMacro 에 대해 다소 자세히 설명되어 있습니다.

매개변수에 대해 몇 가지만 더 말씀드리면,

우선 FunctionName에 들어가는 인자는 함수명인데, "OnScriptMacro_script5()"도 가능하지만, 괄호를 빼고 입력해도 동일하게 실행되더라고요. 두 번째 uMacroType은 매크로 유형인데, 일반적인 유저 분이라면 0만 사용하시면 됩니다.

매크로 저장방법은
PC(아래아한글 프로그램)에 저장하는 "ScriptMacro"와,
문서파일에 저장하는 "DocumentMacro"로 두 가지입니다.
스크립트매크로는 해당 PC에서 모든 hwp 파일에 동일하게 적용할 수 있는 반면,
다큐먼트매크로는 문서를 다른 PC에 복사하고 나서도 실행할 수 있다는 차이점이 있습니다.
위의 uMacroType의 파라미터로 1을 넣으면 다큐먼트매크로가 실행됩니다.

 

세 번째 uScriptType은 아무 정수나 입력해도 "자바스크립트"로 지정이 됩니다. -100이든 255든 0이든 입력해도 실행됩니다.

 

그러면 이 방법으로 한 번 실행을 해보겠습니다.

Shift-Alt 누르고 E를 5번 연타했습니다.

질문 주셨던 분은 아마 수 년 동안 아래아한글 스크립트를 많이 작성해 모아놓으셨던 분 같은데,

이런 경우뿐만 아니라, 폰트나 스타일, 표 수정 등 배열파라미터가 들어가는 스크립트는

파이썬 코드로 수정하기도 번거롭고 시간을 많이 쓰게 되는데, 일종의 꼼수로 유용하게 활용할 수도 있을 것 같아요.

 

오늘 포스팅은 간단히 여기서 마치겠습니다.

행복한 하루 되세요!

 


회사원코딩이 추천하는 오늘자 파이썬 입문교재 3종

 

1. 모두의 파이썬 X 알고리즘(합본호):누구나 쉽게 배우는 프로그래밍 기초

 

모두의 파이썬 X 알고리즘(합본호):누구나 쉽게 배우는 프로그래밍 기초

COUPANG

www.coupang.com

파이썬으로 프로그래밍에 처음 입문하기엔 아주 재미있고 쉽게 배울 수 있음.
다른언어 사용자가 파이썬을 배우는 교재로는 비추천. 다소 가벼운 느낌.

 

2. 초보자를 위한 파이썬 200제

 

초보자를 위한 파이썬 200제

COUPANG

www.coupang.com

깔끔한 예제와 소스에 대한 자세한 설명이 돋보이는 교재.
입문-초급-중급-고급 난이도로 단계별 도전이 가능한 꽤 괜찮은 입문서.

 

3. 혼자 공부하는 첫 프로그래밍 with 파이썬:1:1 과외하듯 배우는 왕초보 코딩 입문서

 

혼자 공부하는 첫 프로그래밍 with 파이썬:1:1 과외하듯 배우는 왕초보 코딩 입문서

COUPANG

www.coupang.com

초유의 베스트셀러 "혼공파"마저도 당신에게 어렵게 느껴진다면?
유튜브 무료강의, 온라인실습과 다양한 이미지를 통해
제목대로 "1:1과외하듯" 파이썬을 배워볼 수 있음.

 

 

 

 


donaricano-btn

댓글