반복되는 파일 작업에서 매크로 짜기
작성자 Prince evilstupidmiserable Little :
DOCTR 님이
그간 작성해 둔 다수의아래 한글 문서를 문서 스타일을 통일시키고
모두 HTM 으로 바꾸되,
UNICODE 로 폰트를 바꾸고
... 등등 엄청 복잡한 작업을 기계적으로 처리해 정리해 달라고 한다.
기타 등등 각각의 사정은 다르지만,
동일한 유형의 작업을 반복해야 할 때 매크로 작업이 필요하다.
● 아래한글 문서 변환작업이므로 아래한글의 매크로가작동이 잘 되면
그냥 아래한글 매크로로 아래한글에서 매크로 작업을
수행하게 해도 된다.
현재 아래한글의 매크로가 시스템 사정인지 프로그램 사정인지 작동이 안 되어서
AUTOHOTKEY 를 사용하고자 한다.
●` 우선 반복작업에서 공통적으로 수행하게 되는 1단계를 여러번 반복해서
일정하게 반복되는 일련 동작을 익숙하게 행한다...
이것을 기록해서 매크로로 반복시키면 된다.
○ 아래한글의 매크로가 작동이 안 되므로,
AUTOHOTKEY 를 사용하는데
이 경우 일일히 프로그램 언어 비슷하게 작성하려면 힘이 든다.
이 때는 AUTOHOTKEY 를 설치하면
함께 설치되는 AutoScriptWriter.exe를 실행하고
그 반복되는 동작을 하면
기본 명령이 기록된다.
○ 그 다음 이것을 놓고 구체적 상황에 따라 조금 변경해서 사용할 필요가 있다.
즉 기록된
명령어를 에러가 발생하지 않도록 조금 수정해주고
매크로로 반복실행할 수 있도록 조금 편집을 해줄 필요가 있다.
예:
■ #2:: => WINDOW 키+2 를 누르면 RETURN 줄까지 매크로가 작동하라는 의미다.
■ LOOP, 200 => { } 에 싸인 명령어들을 200회 반복해서 실행하라는 의미
-- 처음에는 잘 작동하는 지 3 회 정도만 기재한 다음 잘 작동하는 지 테스트 해본 후 적을 필요가 있다.
■ WinWait, ahk_class HwpApp : 7.0,
=> 원래 AutoScriptWriter.exe 는 개별 파일 윈도우 창의 이름을 기록해 준다.
그러나 그 개별 창에서만 명령을 실행하지 않을 때는 해당 프로그램의 일반 윈도우 이름을 적어줄 필요가 있다.
즉 한글만 실행된 상태라면 특정문서에 한정하지 말고 다 실행하게 해야 하는 경우다.
이 때는 AU3_Spy.exe 프로그램(AUTOHOTKEY 설치시 포함된 프로그램임)으로 개별프로그램의 이름을
찾아 내 적어줄 필요가 있다.
ahk_class HwpApp : 7.0, 과 같은 이름이 그것이다. ( 아래한글 프로그램에 대한 이름임 )
■ sleep, 100 => 키 입력이 시간상 너무 빨리 입력되어 오작동이 발생하면 중간에 휴식시간 부여하는 기능
1초는 1000 으로 표시,,,
● 사실 이런 방법은 좀 복잡하고 어렵다.
그래서 쉽게 매크로를 짜기 힘들고
또 테스트하면 몇몇의 에러가 발생하기 마련이다.
○ 그래서 동일한 작업이 50 회 미만이라면
매크로 짜서 하는 것과
그냥 수작업으로 일일히 하는 것과 비교해보면
그 수고의 정도가 서로 엇비슷한 경우가 많다. ^^
● AUTOHOTKEY의 기본 매크로 작성법을 배워두면,
아래한글 뿐만 아니라 여러 반복작업에도 유용하게 사용할 수 있다.
적어 놓고 보니 설명이 쉽지 않아서 도움이 거의 안되는 글이지만,,
(사실은 나중에 비슷한 작업할 때 개인 참조용으로~~~)
그래도 또 누군가에게는 도움이 될 수도 있다는 생각에서
그리고 DOCTR님이 앞으로는 직접 매크로를 짜서 실행했으면 하는 소망에서 일단 적어 놓는다.
-- 예제 --[ 작업을 마치긴 마쳤으나, 왜인지 중간에서 에러가 많이 발생함---구체적 상황이 같지 않으면 이것은 사용하지 않기 바람 ]
#2::
LOOP, 2
{
WinWait, ahk_class HwpApp : 7.0,
IfWinNotActive, ahk_class HwpApp : 7.0,
WinActivate, ahk_class HwpApp : 7.0
WinWaitActive, ahk_class HwpApp : 7.0
MouseClick, left, 998, 347
Sleep, 100
Send, {ALTDOWN}o{ALTUP}
WinWait, 불러오기,
IfWinNotActive, 불러오기, , WinActivate, 불러오기,
WinWaitActive, 불러오기,
Send, {SHIFTDOWN}{TAB}{SHIFTUP}{DOWN}{ENTER}
Sleep, 1000
Send, {ENTER}
WinWait, ahk_class HwpApp : 7.0,
IfWinNotActive, ahk_class HwpApp : 7.0,
WinActivate, ahk_class HwpApp : 7.0
WinWaitActive, ahk_class HwpApp : 7.0
Send, {CTRLDOWN}a{CTRLUP}{CTRLDOWN}1{CTRLUP}
Sleep, 2000
Send, {ESC}{ALTDOWN}v{ALTUP}
WinWait, 다른 이름으로 저장하기,
IfWinNotActive, 다른 이름으로 저장하기, , WinActivate, 다른 이름으로 저장하기,
WinWaitActive, 다른 이름으로 저장하기,
Sleep, 5000
Send, {ALTDOWN}d{ALTUP}
WinWait, ahk_class HwpApp : 7.0,
IfWinNotActive, ahk_class HwpApp : 7.0,
WinActivate, ahk_class HwpApp : 7.0
WinWaitActive, ahk_class HwpApp : 7.0
Sleep, 1000
Send, {CTRLDOWN}{F4}{CTRLUP}{ENTER}
sleep, 2000
}
return