hwp.clipboard_to_pyfunc 를 설명하기 전에 먼저,
기존에 정의된 스크립트매크로를 한/글에서 직접 실행하는 명령어도 있기는 하다.
바로 hwp.run_script_macro라는 메서드인데,
사용법은 간단하다.
hwp.run_script_macro("OnScriptMacro_중국어1성()")
방식으로 사용하면 된다.
대신 유의할 점은,
스크립트매크로 목록의 이름인 "중국어1성"이 아니라
소스코드의 함수명인 "OnScriptMacro_중국어1성()"을 입력해야 한다는 것이다. (괄호 포함)
그런데, 매크로는 수시로 녹화하는 관계로, 지워지거나 변경되는 경우가 잦다.
그래서 특정 매크로를 파이썬 코드로 만들어 두고 싶을 때가 있는데,
이 과정이 어려운 것은 아니지만, 번거롭고 귀찮다.
그래서 어느 정도 이 귀찮은 작업을 자동화해주는 메서드를 만들어보았는데,
이름하여, hwp.clipboard_to_pyfunc() 이다.
사용법은 간단하다.
1. 녹화된 스크립트매크로 전체를 복사한다.
2. hwp.clipboard_to_pyfunc()을 실행한다.
변환된 코드가 클립보드에 복사된다.
3. 빈 셀에 붙여넣기한다.
파이썬 함수명은 script_macro로 초기화되어 있으며,
함수이름만 변경하거나, 파라미터를 넣는 등 변경하면 된다.
예를 들어
문서의 모든 스페이스(" ")를 언더스코어("_")로 변경하는 스크립트매크로를 녹화했다.
녹화한 코드는 아래와 같다.
function OnScriptMacro_중국어1성()
{
HAction.GetDefault("AllReplace", HParameterSet.HFindReplace.HSet);
with (HParameterSet.HFindReplace)
{
MatchCase = 0;
AllWordForms = 0;
SeveralWords = 0;
UseWildCards = 0;
WholeWordOnly = 0;
AutoSpell = 1;
Direction = FindDir("Forward");
IgnoreFindString = 0;
IgnoreReplaceString = 0;
FindString = " ";
ReplaceString = "_";
ReplaceMode = 1;
IgnoreMessage = 1;
HanjaFromHangul = 0;
FindJaso = 0;
FindRegExp = 0;
FindStyle = "";
ReplaceStyle = "";
FindType = 1;
}
HAction.Execute("AllReplace", HParameterSet.HFindReplace.HSet);
}
hwp.clipboard_to_pyfunc()을 실행한 후 셀에 붙여넣은 코드는 아래와 같다.
def script_macro():
pset = hwp.HParameterSet.HFindReplace
hwp.HAction.GetDefault("AllReplace", pset.HSet)
pset.MatchCase = 0
pset.AllWordForms = 0
pset.SeveralWords = 0
pset.UseWildCards = 0
pset.WholeWordOnly = 0
pset.AutoSpell = 1
pset.Direction = hwp.FindDir("Forward")
pset.IgnoreFindString = 0
pset.IgnoreReplaceString = 0
pset.FindString = " "
pset.ReplaceString = "_"
pset.ReplaceMode = 1
pset.IgnoreMessage = 1
pset.HanjaFromHangul = 0
pset.FindJaso = 0
pset.FindRegExp = 0
pset.FindStyle = ""
pset.ReplaceStyle = ""
pset.FindType = 1
hwp.HAction.Execute("AllReplace", pset.HSet)
시연화면은 아래와 같다.
다만, 아직 개발중인 기능으로,
GetDefault와 Execute를 여러 번 수행하는 다중 프로세스 또는
서브셋을 사용하는 복잡한 함수는 아직 지원하지 않는다.
업데이트를 위해 정규식을 깊이 공부중이다ㅜ
조만간 업데이트 예정.
'아래아한글 자동화 > pyhwpx 사용법' 카테고리의 다른 글
[pyhwpx] 메모 또는 메모고침표 일괄삽입하는 예제 (1) | 2024.02.10 |
---|---|
[pyhwpx] 페이지별로 분할 저장하기 (0) | 2024.02.10 |
[pyhwpx] 한/글 문서의 수식 문자열 초간단 추출하기 (0) | 2024.02.01 |
댓글