워드에서 VBA 매크로를 통해 한/글의 Shift+Tab(빠른 내어쓰기), 장평 넓게/좁게(Shift+Alt+K/J), 글자 간격(자간) 넓게/좁게(Shift+Alt+W/N), 줄 간격 넓게/좁게(Shift+Alt+Z/A)를 구현하는 방법을 소개합니다.
목 차
1. 개요
한/글의 장점은 각종 바로 가기 키를 통해 문서 편집을 편하게 할 수 있다는 점입니다. 특히 표와 그림을 많이 사용하고 자간·행간 조절이 잦은 공문서, 보고서 스타일의 문서에서는 바로 가기 키 사용이 필수적인 면도 있습니다. 반면 워드는 문서를 편집하는 스타일 자체가 다르고 이 같은 바로 가기 키 기능도 상대적으로 부족하여 편집에 약간 번거로운 점이 있습니다.
워드 매크로(VBA)로 구현할 수 있는 일부 한/글 기능을 아래와 같이 구현해 보았습니다. 매크로를 붙여넣고 한번 실행하면, 그 이후 해당 컴퓨터의 워드 프로그램에서 계속 사용할 수 있습니다. 바로 가기 키는 가급적 한/글과 동일하게 미리 맞추어 놓았습니다.
항목 | 한/글 단축키 | 매크로 설정 단축키 |
빠른 내어쓰기 | Shift+Tab | Ctrl+Shift+Tab |
장평 넓게/좁게 | Shift+Alt+K/J | (같음) |
자간 넓게/좁게 | Shift+Alt+W/N | (같음) |
줄 간격 넓게/좁게 | Shift+Alt+Z/A | (같음) |
매크로 스크립트의 작동방법이나 개별 객체의 메서드, 프로퍼티는 다른 포스트에서 설명할 예정입니다.
2. 기능 소개
2.1 빠른 내어쓰기 (한/글의 Shift+Tab)
기능 및 설정 단축키 개요
한/글의 Shift+Tab('빠른 내어쓰기' 또는 '자동 내어쓰기')은 "이 기능이 없어서 워드 못 쓴다"고 하는 사람이 있을 정도로, 한/글의 '천지인'으로 불리는 기능입니다. 워드는 원래 탭이나 글자 간격으로 내어쓰기를 맞출 수 있는데[들여쓰기, 내어쓰기 설정 4.3 내어쓰기], 탭 간격은 잘 안 쓰고, 글자 간격은 한/글의 Shift+Tab처럼 칼각을 맞추기가 좀 어렵습니다.
본 기능은 한/글과 마찬가지로, 커서가 위치한 곳을 기준으로 내어쓰기를 자동으로 맞추는 기능입니다.
한/글과 달리 바로 가기 키를 Ctrl+Shift+Tab으로 기본설정하였습니다. 워드에서 Shift+Tab은 표 셀간 이동이나, 단락 또는 목록의 들여쓰기, 단계를 조절하는 키로 쓰이기 때문에[자동 고침 옵션 4.16], 본문 편집에서 사용 가능한 다른 키로 대체하였습니다.
단락 탭이 설정되는 이유
매크로의 기본동작은 간단합니다. 먼저 현재 커서의 위치를 기준으로 왼쪽 들여쓰기를 맞춘 후, 종전의 첫 줄 간격만큼 내어쓰기를 설정합니다.
그런데 만약 들여쓸 위치(커서 위치) 앞에 탭이 있고, 그 탭이 따로 설정한 단락탭(CustomTab)이 아닌 문서에서 공통으로 적용되는 기본탭(DefaultTab)인 경우에는 첫 번째 탭이 왼쪽 들여쓰기 위치까지 늘어납니다[2.1.E, 탭 설정 3. 탭과 내어쓰기의 적용 순서]. 한/글의 Shift+Tab도 실제 이렇게 동작하기 때문에, 한/글에서도 간격이 많이 벌어지는 문제는 종종 경험하게 됩니다.
실제 의도한 것은 탭과 상관없이 현재의 위치를 고정한 채 내어쓰기만을 조절하는 것이므로, 이 매크로에서는, 종전의 기본탭(DefaultTab) 위치에 머리 핀 꽂듯이 단락탭(CustomTab)을 설정하여 위치를 고정하였습니다[2.1.F].
만약 이 기능을 원하지 않으면, 아래 78번째 줄의 코드를 지우거나, 코드 앞에 홑따옴표(')를 붙여 주석 처리하면 작동하지 않습니다.
77
78
|
' 단락 탭(CustomTab) 설정을 원하지 않으면 아래 줄 앞에 홑따옴표(')를 붙여 주석처리하세요.
Call SetCustomTabs(ptCursorPostion:=ptCursorPostion, ptLeftIndent:=ptLeftIndent)
|
2.2 장평 넓히기/좁히기
본문에서 블럭을 지정하거나 개체를 선택한 후 바로 가기 키를 사용하여 장평을 조절합니다.
항목 | 단축키 | 한/글 | 매크로 |
장평 넓히기 | Shift+Alt+K | 1%p씩 조절 | (동일) |
장평 좁히기 | Shift+Alt+J | 1%p씩 조절 | (동일) |
2.3 자간 넓히기/좁히기
본문에서 블럭을 지정하거나 개체를 선택한 후 바로 가기 키를 사용하여 자간을 조절합니다.
- 워드에서는 자간을 '간격'이라고 표시하며, 한/글과 달리 point단위로 변경됩니다.
- 워드에서의 Shift+Alt+N은 메일머지에서 사용하는 메서드(MailMergeToDoc)인데, 어느 상태에서 작동하는 것인지 파악이 안 되어 그냥 덮어썼습니다. 따라서 메일머지 기능을 사용 중이라 하더라도 Shift+Alt+N는 자간 좁히는 기능으로만 사용됩니다.
항목 | 단축키 | 한/글 | 매크로 |
자간 넓히기 | Shift+Alt+W | 1%p씩 조절 | 0.1pt씩 조절 |
자간 좁히기 | Shift+Alt+N | 1%p씩 조절 | 0.1pt씩 조절 |
2.4 줄 간격 넓히기/좁히기
본문에서 블럭을 지정한 후 바로 가기 키를 사용하여 행간을 조절합니다. 여러 단락을 블록으로 지정하여 동시에 조절하는 것은 가능합니다.
- 줄 간격이 point단위인 '고정, 최소'인 경우에는 1pt씩, 줄 간격이 배수단위인 '1줄, 1.5줄, 2줄, 배수'인 경우에는 0.1줄씩 조절됩니다.
- 워드에서 Shift+Alt+A는 '개요 보기 모드'에서 전체 수준을 토글로 표시하는 메소드(ShowAllHeadings)입니다. '개요 보기 모드'인 경우에는 원래 지정된 기능으로 작동하도록 하였습니다.
항목 | 단축키 | 한/글 | 매크로 | ||
줄 간격 넓히기 | Shift+Alt+Z | 글자에 따라 | 10%p씩 조절 | 배수 | 0.1줄씩 조절 |
줄 간격 좁히기 | Shift+Alt+A | 고정 | 1pt씩 조절 | 고정 | 1pt씩 조절 |
3. 설정 방법
3.1 개요
사용자 본인이 직접 매크로 스크립트를 Normal.dotm에 옮긴 후 실행합니다. 이때 '실행'은 매크로 스트립트에 바로 가기 키를 지정하는 것으로서, 1번만 실행해 놓으면 코드가 남아 있는 한 해당 컴퓨터에서는 계속 사용할 수 있습니다.
3.2 순서
① 아래 스크립트 파일을 다운받아 바탕화면 등에 임시로 저장합니다.
주 의
변형된 파일이 실행되지 않도록 매크로는 개별 사용자가 이 블로그에서 직접 다운받아 사용할 것을 권장합니다.
② 워드에서 Alt+F11을 눌러 '[VB 편집기]를 엽니다. [VB 편집기]에서 아래 [프로젝트 탐색기]가 보이지 않으면, 메뉴의 보기(V) > 프로젝트 탐색기(P)를 선택하여 탐색기를 엽니다.
③ Normal을 선택한 후 우클릭하여 파일 가져오기를 선택합니다.
④ ①에서 임시로 저장한 'hwpShortcuts.txt' 파일을 선택하여 불러 옵니다. [파일 가져오기 대화상자]의 기본 파일형식은 'VB 파일 (*.frm,*.bas,*cls)'로 되어 있으므로 txt파일을 선택하기 위해서 파일 형식을 모든 파일 (*.*)로 지정해야 합니다. 모듈은 원래 bas파일(Visual Basic 파일)로 저장되지만, bas는 사용상의 제약이 있어 일반 텍스트 파일(txt)로 저장하여 첨부하였습니다.
⑤ 'Normal'의 '모듈'을 보면 'hwpShortcuts' 모듈이 생성된 것을 알 수 있습니다. hwpShortcuts.txt의 스크립트가 Normal.dotm으로 옮겨졌으므로, 임시저장한 hwpShortcuts.txt는 지워도 됩니다. 'hwpShortcuts' 모듈을 더블클릭하여 코드 창을 엽니다.
⑥ "Sub 한글단축키설정()"의 "여기를 클릭한 후 F5를 누르면 매크로 단축키로 설정됩니다" 부분을 클릭한 후 F5를 누르면 매크로 실행되어 7개 기능의 단축키(바로 가기 키)가 각 매크로와 연결됩니다.
이후로는, 지정된 바로 가기 키가 눌리면 연결된 매크로가 바로 실행됩니다. 가령 Ctrl+Shift+Tab이 눌리면 'Sub 빠른내어쓰기()'가 실행되어 해당 단락의 내어쓰기가 맞춰지는 것입니다.
주 의
VBA 매크로는 시스템 자원 사용권한이 있어서 파일을 지우거나 시스템 설정을 변경할 수 있습니다. 특히 여기서 설명하는 방식은 사용자가 직접 Normal.dotm을 편집하는 것이어서, 통상의 매크로파일(.docm, xlsm)과 달리 매크로를 실행할 때 경고가 뜨지 않습니다.
출처를 알 수 없는 매크로를 절대 이 방식으로 실행해서는 안 됩니다.
3.3 일부만 설정하는 방법
매크로 스크립트의 일부 기능만을 사용하고자 할 경우, 3.1.2.의 ⑥단계를 실행하기 전에 바로 가기 키를 설정하는 매크로 앞에 ' 를 붙인 후 실행하면 됩니다.
- VB(Visual Basic)에서 '는 해당 줄을 주석(comment) 처리하는 것입니다. 주석이 되면 코드로 실행되지 않으며, VBA 편집기에서 녹색 글씨로 표시됩니다.
- 이미 전체 기능을 설정한 상태에서 일부 기능만 사용하고자 할 경우에는, 먼저 [4]에 따라 전체 기능을 해제한 후 다시 설정하여야 합니다.
3.4 지정된 바로 가기 키를 변경하는 방법
본 매크로는 7개 기능을 하나의 세트로 묶어놓은 것으로서 최대한 설정을 편하게 하기 위해 바로 가기 키도 미리 지정해 놓았습니다. 지정된 키를 다른 키로 변경하고자 할 경우에는 [3.2]의 ⑥단계를 실행하기 전에 코드를 변경해야 합니다.
1
2
3
4
|
' 기본설정 : 빠른내어쓰기 프로시저를 Ctrl+Shift+Tab 단축키로 연결함
KeyBindings.Add KeyCode:=BuildKeyCode(wdKeyControl, wdKeyShift, wdKeyTab), KeyCategory:=wdKeyCategoryMacro, Command:="빠른내어쓰기"
' 수정 : 만약 단축키를 Shift+Tab으로 변경하고자 하면 원래 코드에서 'wdKeyControl'을 삭제하면 됨
KeyBindings.Add KeyCode:=BuildKeyCode(wdKeyShift, wdKeyTab), KeyCategory:=wdKeyCategoryMacro, Command:="빠른내어쓰기"
|
각 키 값은 아래 문서를 참고하시면 됩니다.
4. 해제 방법
단순히 코드만을 삭제해도 작동은 하지 않으나, 바로 가기 키와 연결되어 있기 때문에 코드를 바로 삭제하면 해당 키를 누를 때마다 매크로를 찾을 수 없다는 에러표시가 나옵니다. 따라서 완전히 해제하기 위해서는 해당 바로 가기 키 설정을 해제하여야 하고, 바로 가기 키 일괄해제를 위한 별도의 프로시저도 만들어 놓았습니다.
순서는 다음과 같습니다.
① Alt+F11을 눌러 VBA 편집창을 열고, hwpShortcuts 모듈을 더블클릭하여 선택합니다.
② "Sub 한글단축키해제()"의 "여기를 클릭한 후 F5를 누르면 매크로 단축키가 해제됩니다" 부분을 클릭한 후 F5를 누르면 해제를 위한 매크로가 실행됩니다. 이 프로시저는 종전에 매크로를 설정한 키를 다시 원래의 기능으로 초기화하는 것입니다. 7개 매크로 키가 해제되면서 아래 메시지 창이 나옵니다. 끝났습니다.
이 매크로를 앞으로 쓰지 않을 예정이라면 hwpShortcuts 모듈 자체를 삭제하면 됩니다.
※ 수정 이력
- 최초 게시 : 2020. 8. 5.
- 스크립트 수정, hwpShortcuts.txt v1.2 업로드 : 2020. 12. 16.
'개발 도구 > VBA 매크로' 카테고리의 다른 글
개발도구 탭 (0) | 2023.05.08 |
---|---|
변경내용 보기 탭 만들기 (0) | 2022.03.16 |
각주 장식 추가 매크로 (0) | 2021.02.07 |
메모 작성자 변경 매크로 ① 기본, 응용 코드 설명 (0) | 2020.09.06 |
워드 VBA 매크로 실행, 바로 가기 키 연결 (0) | 2020.08.20 |