ejmhuse2의 등록된 링크

 ejmhuse2로 등록된 네이버 블로그 포스트 수는 183건입니다.

KeyIndicator 와 한글 내부 스크립트 매크로 [내부링크]

어제 이웃게시판에 jd7768님이 어떠한 사정으로 파이썬(Python)에서 KeyIndicator가 사용이 어려워져서,...

수식 안의 문자를 밖으로 꺼내는 매크로 [내부링크]

지난 매크로는 단어를 수식으로 바꾸는 매크로였습니다. 지난 번에 수식 밖에서 수식 안으로 들어갔으니, ...

문제 수가 많을 때 '빠른 정답 매크로'가 느리다면.. [내부링크]

빠른 정답 매크로는 미주 정답에 있는 '답'을 커서(=캐럿)의 위치로 복사해 오는 매크로입...

빠른 정답 오류 제보와 성능 개선 [내부링크]

11월 8일에 수력학원님께서 오류 제보를 댓글로 알려주셨습니다. ( 오류 제보해주신 수력학원님 감사합니다...

반복문 없이 만든 빠른 정답 매크로 [내부링크]

왼쪽부터 첫 번째는 How JavaScript Works Paperback – October 18, 2018 by Douglas Crockford ...

파이썬으로 컨트롤 개체(머리말, 꼬리말, 미주, 각주, 표, 그림, 수식) 지우기 [내부링크]

'조판부호 지우기'에 이어서 바로 파이썬으로 '컨트롤 개체'를 지우는 방법에 대한 설...

파이썬으로 한글(Hwp) 조판부호 지우기 [내부링크]

11월이 되면서 각종 모임이 많아지네요. 오전 모임이 많아지다보니 매크로 코드를 공부할 시간이 줄어듭니...

유형별(태그)로 원하는 문제 추출 하기 [내부링크]

한글(Hwp) 자료를 타이핑하고 모으다보면 자료는 많아지는 데, 실제로 쓸만한 자료는 항상 부족하다고 느...

예전 버전의 한글(hwp) 부등호 기호와 글씨체 변경 [내부링크]

2006년 교육과정 평가원에서 발표한 개편 내용에 기존의 부등호 ' ≦ ' 를 국제 표준으로 사용하...

문자열(String)을 제어하는 메서드(method) [내부링크]

한글(Hwp) 프로그램은 주로 문서를 다루는 기능을 합니다. 문서는 문자로 되어 있고, 그 문자열을 어떻게 ...

한글(Hwp) 프로그램만으로 이미지 프로세싱 [내부링크]

어제와 오늘 한글(Hwp) 프로그램 만으로 그림(Image)를 처리할 수 없을까 고민하느라 시간을 좀 보냈습니...

영어 문장에서 단어를 무작위로 섞는 매크로 [내부링크]

지난 영어 빈칸 만드는 매크로에서 오늘은 영어 문장에서 블록 지정한 부분의 단어를 무작위로 섞는 매크로...

모의고사 문제에 미주 만드는 매크로 [내부링크]

한글(Hwp) 매크로를 만들면서 블로그에 업로드하는 매크로는 주로 보편적으로 사용 가능한 매크로가 대상...

문단 번호와 개요 번호 이동 매크로 [내부링크]

저는 한글(Hwp) 편집할 때, 주로 미주 번호를 숫자 번호로사용합니다. 하지만 문단번호와 개요 번호를 사용하시는 분들도 많으시죠. 저도 예전에는 문단 번호를 자주 사용했었습니다. 문단 번호는 HwpCtrl API에서 미주처럼 Ctrl ID 가 따로 없다보니 매크로를 만드는 데 부족함이 느껴져서 안 쓰게된 이유가 큽니다. 그러다가 며칠 전에 HwpCtrl API를 천천히 보다가 전에는 보지 못했던, GetHeadString 메서드를 발견(?)했습니다. 내용은 아래 그림과 같습니다. 번호를 문자열(String)으로 추출해준다고? 그렇다면, 문단 번호나 개요 번호 이동 매크로로 만들 수 있겠구나 하고 번뜩 생각이 들었습니다. 그래서 바로 만들어보기 시작했고, 결과.......

매크로 코드 편집하는 방법 : 교정 작업 다른 버전 [내부링크]

앞서 괄호와 따옴표에 대한 검사를 하는 매크로를 업로드 했습니다. 이번 글은 그 글에 이어서 설명하는 글입니다. 매크로를 코드를 만들면서 항상 주의하고 있는 부분은 원본 문서를 최대한 수정하지 않아야 하는 점입니다. 만약 어쩔 수 없이 원본 문서를 수정해야 한다면, 다른 이름으로 저장하기를 통해 역시나 원본 문서의 수정을 안하려고 합니다. 원본 문서가 훼손 될 경우, 치명적인 문제가 생길 수도 있기 때문에 최대한 피하면서 매크로를 만듭니다. 지난 괄호와 따옴표 검사 매크로는 글자 모양을 변경하기 때문에 원본을 수정하게 만드는 매크로입니다. 그래서 이 부분을 어떻게하면 막을까? 하고 고민했어요. 그래서 글자 모양을 변.......

조건식 매크로 - 첫번째 이야기 : 영어 단어 괄호 만들기 [내부링크]

지난 번에 글은 한글(Hwp)프로그램으로 교정 작업을 하는 매크로를 보여드렸습니다. 한글의 강력한 '조건식' 찾기 기능은 그 활용 범위가 넓어요. 그래서 이 '조건식' 찾기를 많은 분들이 알고 쓰면 좋겠다는 생각을 해서 예전에도 '조건식'찾기 관련 글을 업로드 했습니다. 그런데, 이렇게만 알려드려서는 활용이 안 되겠구나 하는 생각을 했습니다. 마치 우리말 한글을 이제 가르쳐 놓고, 단어와 문장의 연습없이 곧바로 한 페이지 글을 써보고라고 한 것과 같다고 할까요. 그래서 조건식 기능만 열거해서 알리는 것보다는 활용 예를 보여 드리면서 이런 곳에 쓰이는 구나 알 수 있도록 설명하려고 합니다. 오늘.......

영어 단어 무작위 추출 매크로 - 조건식 활용 [내부링크]

이번 글은 이 전에 올렸던 자바스크립트의 random 함수로 번호를 무작위 생성하고, 한글(Hwp)의 조건식을 이용해서 미주로 되어 있지 않은 번호가 있는 영어 단어를 추출하는 매크로에 대한 이야기입니다. 아래 그림은 대상이 되는 영어 단어가 있는 샘플 파일입니다.(이 영어단어 파일은 구글에서 '영어 단어 hwp'로 검색해서 공개된 파일을 다운로드 한 파일입니다. 참고한 사이트를 아래 링크했습니다. 파일 공유해주신 분께 감사드립니다.) 그림을 보면, 그냥 번호로 되어 있을 뿐 미주로 된 번호는 아닙니다.(일부러 '조판부호 보이기'를 통해 미주가 아님을 보여드렸어요.) 이렇게 번호가 되어 있는 단어를 무작위로 추.......

스크립트 코드로만 가능한 매크로-4 ( 형광펜 기능 ) [내부링크]

우선, 제목을 짧게 지으려다보니 오해가 생길 수 있어서 이 글 제목의 뜻을 정확히 다시 설명드리자면 한글(Hwp)의 기본 기능인데, 키 매크로 녹화로는 안되고 스크립트 코드를 작성해야만 만들 수 있는 매크로를 말합니다. 한글(Hwp)에서 형광펜 기능을 저는 잘 사용하지 않습니다. 이유는 강조나 표시가 필요하다면, 한글(Hwp)에 '글자모양'에서 음영을 기능을 사용해도 되기 때문입니다. 그리고 '글자모양'은 조건식 찾기로 찾을 수도 있고, '글자 바꾸기'를 통해서 바꿀 수도 있어서 매크로 적용하기도 편합니다. 그에 비에 형광펜은 '조판 부호'에도 나타나지도 않고, '찾아가기'를 통해.......

특정 한 문제의 각주를 만드는 매크로 [내부링크]

이 매크로는 미주로 편집된 문제 번호에서 각주를 새로 만듭니다. 위 그림에서 1번에서 각주를 만들었고, 3번에서 각주를 만들었습니다. 그리고 마지막으로 12번에서 각주를 만들었습니다. 알림) 미주를 각주로 변환하는 매크로가 아닙니다. 한글(Hwp) 자체에 전체 미주를 각주로 변환하거나 전체 각주를 미주로 변환하는 기능이 있습니다. 이 매크로는 특정 미주에 각주를 만드는 매크로입니다. 처음에는 특정 번호의 미주만을 각주로 변환하는 방법을 생각했었는데, 그렇게 했더니 번호가 엉망이 되어서 그냥 각주를 만드는 방식으로 만들었습니다. 매크로 사용시 주의 사항은 반드시 미주 번호가 있는 줄(Line)에서 이 매크로를 실행해야 합니.......

영어 문장의 단어를 빈칸 테스트로 바꾸는 매크로 [내부링크]

한글(Hwp) 프로그램 자체의 기능 중 제가 생각하는 으뜸은 조건식 찾기와 찾아 바꾸기 기능입니다. 대량의 한글 문서 안의 단어를 찾거나 바꿀 수 있기 때문입니다. 하지만 저는 한글(hwp)의 스크립트 매크로를 더 매력적으로 느낍니다. 한글 스크립트 매크로에서 지원하는 언어인 자바스크립트 언어로 인해 그 유연성(flexible)이 굉장히 크기 때문입니다. 제가 블로그를 통해 글을 써야 겠다고 마음 먹은 이유 중에 하나는 이 유연성(flexible) 때문입니다. 한글 자체 기능에 대해서는 이미 시중에 책도 나와 있고, 여러 사이트에서도 많은 정보가 있습니다. 하지만 한글 스크립트 매크로와 관련해서 자바스크립트를 활용한 예가 많지 않다보니.......

객관식 정답을 형광펜으로 표시하는 매크로 [내부링크]

오늘 소개해드릴 매크로는 객관식 문제에서 정답을 형광펜으로 표시해 주는 매크로입니다. 이 전에 글을 쓸 때, 저는 형광펜 기능을 잘 사용하지 않는다고 했고 그냥 글자 모양 바꾸기해서 음영을 만들면 된다고 했습니다. 그런데 형광펜 기능을 제가 잘 사용하지 않아서 몰랐을 뿐, 다른 사이트에 검색하면서 형광펜 기능에 대해 글을 읽다보니 정답 표시용으로 형광펜 기능만의 장점이 있다는 것을 뒤늦게 깨달았습니다. 섣부른 판단으로 선입견이 생기지 않도록 노력한다고 했는데도 잘 알아보지도 않고 경솔하게 글을 썼습니다. ㅜㅜ 사람은 역시 계속 배워야 하는 것을 또 다시 깨닫습니다. 그래서 속죄의 마음으로 형광펜 기능을 사용한 매.......

객관식을 주관식으로 변경 매크로 Version Up [내부링크]

오늘은 예전에 이미 공유해 드렸던 객관식을 주관식으로 변경하는 매크로를 조금 더 개선한 매크로를 설명드리려고 합니다. 이전에 객관식 보기가 2줄로 되어 있을 때, 5줄로 변경하는 매크로를 설명드린 적이 있어요. 그 매크로를 연구하면서 객관식 보기의 끝지점으로 어떻게 캐럿(커서)를 이동시킬까 고민하다가 단순하면서도 꽤 괜찮은 아이디어를 얻었고, 동시에 그렇다면 객관식을 주관식으로 변경하는 매크로에도 적용 가능하겠구나를 바로 생각했었습니다. 지금 공개하는 매크로는 이미 그 때 다 만들었습니다. 언제 이 내용을 블로그에 올릴까 하다가 그날이 오늘이 된 겁니다. 그럼 먼저 잘 이해가 안 되실 수도 있으니 어떤 상황인지.......

미주 번호(정답)만 변경 매크로 - 첫번째 이야기 : 글자 모양 변경 [내부링크]

네이버 블로그는 검색 유입 경로를 파악 할 수 있도록 통계 분석을 해 줍니다. 검색 유입 경로를 저는 자주 봅니다. 이유는 한글 매크로 관련해서 어떤 검색으로 유입 했는 지 보면, 무엇이 필요하구나를 파악할 수 있어서요. 며칠 전에 '미주 정답만 글자 크기 변경하는 방법'이라고 검색 해서 방문하셨던 분이 계시더라구요. 그래서 미주 정답 글자 크기만 크게 혹은 작게 변경하고 싶었구나 하고 알게 되었고, 저도 평상시에 느끼던 거였지만, 굳이 매크로까지 사용할 정도의 양이 아니어서 그냥 하나씩 변경하고 있었습니다. 그런데, 미주로 된 문제 수가 많으면 필요할 수도 있겠다 싶어서 만들었어요. 아래 코드를 봐주세요. 코.......

미주 번호(정답)만 변경 매크로 - 두번째 이야기 : 수식 변경 [내부링크]

이번 글은 지난 번에 예고한대로 글자 모양과 함께 미주 번호에 있는 즉, 정답에 있는 수식 크기만을 변경해 보는 매크로 글입니다.(본문에 있는 수식은 그대로 있는 상태로요.) 코드 설명 전에 먼저 실행 그림을 보여 드릴께요. 그림을 보시면, 정답에 있는 글자와 수식만 크기 1로 변경되었고, 본문에 있는 글자나 수식은 그대로 입니다. 정답에 있는 글자와 수식 크기를 21로 변경해 볼께요. 그리고 마지막으로 보통 많이 사용하는 글자와 수식 크기 모두 11로 변경해보겠습니다. 매크로가 잘 실행되죠?^^ 매크로 사용법과 코드에 대한 설명을 드릴께요. 지난 번에 만들었던 글자 모양 바꾸는 매크로에 수식 변경 코드도 포함시켜 작성했습니.......

키 녹화 매크로와 스크립트 매크로 속도 차이 [내부링크]

키 녹화 매크로는 한글(hwp)프로그램 자체에서 '매크로 정의'하기를 통해 자동적으로 생성되는 키 입력에 대한 매크로를 말합니다. 스크립트 매크로는 매크로 코드 편집 창에서 스크립트(Script : 소프트웨어를 실행할 수 있는, 프로그램 언어 이외의 간단한 언어로 작성한 명령어) 를 작성하는 매크로를 말합니다. 일반적으로 키 매크로보다 스크립트 매크로가 다양한 명령을 내릴 수 있고(한글 내장 매크로 언어로 자바스크립트(JavaScript) 언어를 지원합니다.) 매크로를 작성하는 방법에 따라 속도를 더 향상 시킬 수 있습니다.( 초보자에게는 키 녹화 매크로가 편합니다. 그리고 매크로 공부할 때도 자동 생성된 코드가 도움이 됩.......

객관식 보기 번호를 5줄로 정렬하는 매크로 [내부링크]

이번 글은 그림으로 시작했습니다. 말로 설명하면 잘 이해가 안되실 듯 해서요. 위 그림을 보시면 객관식 문제 보기 번호가 2줄로 되어 있는 문제를 1번부터 5번까지 5줄로 만든 매크로입니다. 그림을 자세히 보시면 2번 문제는 이미 5줄로 되어 있지만 매크로를 실행해도 그대로 있습니다. 1줄이나 2줄로 된 객관식 보기 번호만을 5줄로 바꾸는 매크로에요. 그리고 또 하나는 기존의 1줄이나 2줄로 되어 있었다면 5줄로 바꿀 때 줄 수가 늘어나서 그 아래에 있는 문제들이 밀려납니다. 그 것을 방지하기 위해 늘어난 줄 수만큼 줄 수를 줄이도록 해서 전체적으로 문제 배치가 달라지지 않습니다. 물론 한글은 편집 방식이 다양해서 수식이 포함.......

문제가 단을 걸쳐 있을 때 정리하는 매크로 [내부링크]

한글 2010, 한글 2014, 한글neo, 한글 2018, 한글 2020 버전이 업그레이드 되면서 혹은 업데이트의 문제로 분명히 한글 문서를 제대로 각 단별로 정리를 해놨는데 아래 그림처럼 문제가 단에 걸쳐서 있는 경우가 있습니다. 몇 개 안되면 그냥 하나씩 정리하면 되고 제일 앞에 문제만 엔터를 입력해서 다음 문제가 다 저절로 정리되면 좋은 데, 그렇지 못한 상황에서 양 또한 많으면 시간이 꽤 걸리게 됩니다. 기존에 문항배치 매크로는 내가 편집해 놓은 문제를 모두 재정리를 하기 때문에, 이 상황에 사용하기에는 적절치 않은 듯해서 문제가 단에 걸쳐져 있는지 확인하고 그렇다고 하면 단 나누기를 통해 문제 배치를 정리하는 매크로를 만들었.......

알고리즘 이란 무엇? [내부링크]

알고리즘은 게으름이 예술로 표현된 것이다. 정말 재미있는 표현이다. 나는 정말 게으른 사람이 맞는 것 같다. 어떻게 하면 한글(hwp) 작업을 최소한의 시간에 적은 노력으로 끝낼 수 있을까를 매일 생각하고 있다. 아이러니한 것은 작업을 간단하게 하기 위해 매크로를 만드는 것인데, 매크로를 만들면서 더 많은 시간이 걸린다는 사실이다!!! 물론, 만들어 놓으면 필요한 순간에 적절히 잘 사용하기 때문에 알고리즘을 생각하는 시간이 아깝지는 않다. 정말 단순하게 아무런 일도 하지 않는 게으름은 더 많은 비용을 초래한다. 문제를 일으키지 않고 거의 대부분의 시간을 게을리 지내기 위해 알고리즘이 필요하다. < 알고리즘이 뭐야? >.......

미주 번호(정답)만 변경 매크로 - 세 번째 이야기 : 글자와 수식 크기 [내부링크]

같은 내용으로 세 번째까지 글을 씁니다. 세 번째까지 글을 쓰는 이유는 나름의 이유가 있어서에요. 같은 기능을 하는 매크로라도 그 코드 내용은 충분히 다를 수 있습니다. 코드를 짜는 데 정답은 없지만 조금 더 빠르고 코드가 간결할 수 있다면 시도해 봄 직합니다. 이번 글은 앞에 코드를 더 간결하고 속도가 더 빠르게 변경한 코드를 소개합니다. 아래 그림을 봐 주세요. 글자와 수식 크기를 동시에 변경할 수 있는 매크로입니다. 처음에는 글자와 수식 크기를 1로 변경했다가 다시 21 마지막에 11로 변경해 본 것입니다. 본문의 글자와 수식은 그대로 있습니다. 앞에 만들었던 글자 변경과 수식 크기 변경과는 차이점이 있습니다. 코드로 설.......

키 매크로가 스크립트 매크로보다 더 좋은 때 : 교정 작업 [내부링크]

앞서 스크립트 매크로가 키 매크로(녹화 매크로)보다 속도가 더 빠를 수 있음을 보여 드렸습니다. 그렇다고 스크립트 매크로가 키 매크로 보다 항상 더 좋은 것은 아닙니다. 한글(Hwp)프로그램 자체가 가지고 있는 훌륭한 기능(?)을 사용해야 할 때는 키 매크로가 더 좋습니다. 제가 좋아하는 한글(Hwp)의 기능은 찾아가기, 찾기, 찾아바꾸기 기능입니다. 그리고 그 기능 안에서도 '조건식'으로 찾기는 그 활용도가 좋아서 매우 좋아합니다. (프로그램 언어에서는 보통 '정규표현식'이라고 합니다. 검색할 조건을 세밀하게 할 수 있는 기능입니다.) 이 기능을 잘 알고 있고, 사용해야 할 때를 알고 있으면 스크립트 매크로를.......

현재 그림 크기 기준으로 크기 변경 매크로 [내부링크]

지난 번에 그림 크기를 변경하는 매크로를 수정해서 업로드 했습니다. 그런데, 그림 크기 변경 매크로는 크기 변경 기준이 원래 그림의 크기(한글 파일에서 변경한 크기가 아닌 그림 자체의 원래 orginal 크기)를 기준으로 변경하는 매크로였습니다. 그냥 현재 그림 크기에서 내가 원하는 대로 일괄 변경할 수는 없을까요? 한글 편집을 할 때, 이미 내가 원하는 대로 그림 크기를 맞춰놨을텐데, 현재 그림 크기에서 조금만 전체 그림을 작게 한다던지, 아니면 조금 크게 하는 매크로가 더 필요하지 않을까 싶어 만들었습니다. 아래 실행 예를 봐주세요. 위에서 매크로를 실행할 때, 변수 ratio 에 숫자를 변경하면서 현재 그림 기준으로 크기를 변.......

파이썬 GUI 탭(Tab) 생성 해보기 [내부링크]

파이썬 Tkinter를 이용해서 만든 GUI(Graphical User Interface, 사용자가 편리하게 사용할 수 있도록 입출력 등의 기능을 알기 쉬운 아이콘 따위의 그래픽으로 나타낸 것)를 조금씩 수정 보완해 보고 있습니다. 오늘은 기존에 만들어 왔던, 프로그램들을 하나의 GUI에 Tab을 생성해서 만들어 봤어요. 여러 개 프로그램을 하나씩 실행하기 보다는 탭으로 만들어서 내가 실행하고 싶은 것을 선택하는 형태가 더 편리할 듯 해서 만들었습니다. 아래 그림을 봐 주세요. 기존에 만들었던 3개의 프로그램을 3개의 탭으로 만들어 본 것입니다. 이미 만들었던 프로그램이나 앞으로 만들 프로그램을 탭이나 메뉴(메뉴는 아직 안만들었지만, 어렵지 않습니.......

파이썬 GUI 멀티 쓰레딩 적용 [내부링크]

요새는 계속 파이썬 Tkinter 수정하는 재미로 시간을 보내고 있습니다^^ 지난 글에서 언급한대로, 오늘은 멀티 쓰레딩에 대해 설명하도록 할께요. 우선, 지난 번 문제 상황 그림을 다시 한 번 더 보면 위 그림에서 실행 버튼을 누르고 나면, 일시적으로 GUI가 멈추는 현상이 생깁니다. 이 부분을 해결하려면, 멀티쓰레딩을 적용해야 합니다. 파이썬에서 Thread를 import 해주고 나서 실행 버튼 함수에 위 코드를 추가해줬어요. hwptopdf 는 hwp를 PDF로 변환하는 함수입니다. 위 코드를 각 버튼 함수에 추가해 주고 나서 실행해 본 그림이 아래입니다. 위 그림을 보면, 각 탭의 실행 버튼을 누르고 나서도 GUI 멈춤 현상이 일어나지 않는 것을 볼.......

파이썬 Hwp 프로세스 강제 종료 & GUI 버튼 비활성화 [내부링크]

오늘도 Python Tkinter GUI에서 생기는 문제점을 하나씩 수정해보려고 합니다. 제가 수정하고 있는 GUI 프로그램은 Hwp를 OLE(Object Linking and Embedding : 파이썬으로 아래한글 제어) 하는 기능을 하기 때문에 GUI가 Hwp실행 도중 종료하게 되면 Hwp는 좀비 프로세스(종료되지 않고 메모리 자원을 불필요하게 소비하는 프로세스:윈도우에서는 실질적으로 좀비 프로세스가 없지만, 백그라운드에서 실행되는 프로세스를 지칭하도록 할께요.)가 되어 버립니다. 더 큰 문제는 단순히 메모리 낭비만 하는 것이 아니라 좀비 프로세스가 된 Hwp 문서는 컴퓨터를 종료하기 전까지 계속 실행되기 때문에 해당 Hwp를 문서를 다시 읽었을 때 락(Lock : H.......

파이썬 GUI 백그라운드 Hwp만 종료시키기 [내부링크]

오늘은 GUI 프로그램으로 제어했던 Hwp 문서만 종료하는 방법에 대한 이야기입니다. 지난 글에서 만들었던 코드는 GUI의 '닫기' 버튼을 누르면, Hwp 프로그램도 모두 종료시키도록 만들었습니다. 아래 그림을 봐 주세요. 처음에는 실행되는 앱에 Hwp 문서가 있다가 GUI 프로그램으로 실행을 하면 백그라운드 프로세스에도 Hwp 문서가 나타납니다. 그리고 '닫기' 버튼을 누르면 백그라운드 Hwp 뿐만 아니라 실행되는 앱에 있는 Hwp도 모두 종료됩니다. 백그라운드 실행되는 Hwp가 종료되는 것은 좋은 데, GUI가 제어하지 않았던 먼저 실행되는 Hwp 마저 종료시켜버리면, 내가 따로 작업하던 Hwp 문서가 날아가버릴 수도 있죠.......

문제 사이 간격을 일정하게 만드는 매크로 [내부링크]

문항 배치 매크로가 성공적으로 실행되려면, 문제 사이의 간격이 일정해야 합니다. 문제 추출 매크로를 사용하고 난 후에는 문제 사이 간격이 일정하기 때문에 괜찮은 데, 내가 임의로 문제를 복사해서 붙여 넣었거나 문항의 간격을 편집했을 때는 '문항 배치 매크로'를 사용하면 제대로 작동하지 않습니다. 아래 그림은 '문항 배치 매크로'가 제대로 적용 되지 않는, 문제 사이 간격이 일정하지 않을 때입니다. 위 그림과 같이 한글 문서가 편집 되어 있을 때, '문항 배치 매크로'를 실행해 볼께요. 그러면, 이 문제 상황을 어떻게 해결할까요? 저는 문제 사이 간격을 일정하게 되도록 만드는 매크로를 새로 만들.......

오답노트 매크로 공개 및 코드 해석 - 4(마지막) [내부링크]

이제 마지막 함수를 설명드리고, '오답노트 매크로' 코드 설명을 마무리 하겠습니다. 마지막 함수는 function findNearbyCtrlAtRootList( ctrlID ) 입니다. 이 함수는 끝에 괄호 안에 ( ctrlID) 라는 매개 변수를 포함하고 있는 함수입니다. 매개변수를 포함하는 함수는 그 개념부터 우선 어느 정도 알고 계셔야 이 코드가 이해되실거에요. 위에 제가 이전에 올렸던 매개 변수가 있는 함수에 대한 글이 있으니 한 번 참고해보시기 바랍니다. function findNearbyCtrlAtRootList( ctrlID ) 함수를 보고, 역시 무지 놀랐습니다. 이 함수는 CtrlID 를 매개변수로 하기 때문에 CtrlID를 괄호 안에 넣기만 하면 현재 커서 기준으로 컨트롤의.......

여러 탭문서에서 오답 문제 추출하는 매크로 [내부링크]

요새 매일 매일 날씨가 점점 더 더워지는 느낌이네요~^^;;; 방학동안 바쁜 와중에도 매크로 알고리즘 만드는 것과 프로그램 언어(C언어, C#, 자바, 자바스크립트 등 그냥 흥미나는 대로 막 읽고 있어요.) 공부하는 재미는 끊을 수가 없네요~ 일하는 시간은 길게 느껴지는 데, 매크로 하는 동안은 시간이 순삭입니다!!! 여러 탭문서에서 원하는 문제를 추출해서 오답노트 매크로를 만드는 방법은 이미 어떻게할 지 생각은 하고 있었다가 어제 아침에 일어나서 만들어봐야 겠다고 하고 만들었더니, 금방 만들어졌습니다^^ (진작에 만들어도 되는 건데, 조금 더 완벽하게 만들려고 생각을 많이 하다보니 늦어졌네요~) 그래서 오답 문제를 여러 문서.......

미주로 된 문제 자동 배치 매크로 공개 [내부링크]

문항 자동 배치와 관련한 매크로를 계속 연구 중에 있습니다. 한글(hwp) 프로그램은 문서 작성의 자유도가 높아서 편집 상태가 다양하다보니, 문항 자동 배치 매크로를 만들어도 예외 상황이 많이 발생합니다. 그래서, 문항 자동 배치 매크로는 최대한 단순한 형태로 만들려고 노력을 했습니다. 그리고 문항 자동 배치 매크로는 오답문제 추출 매크로를 사용해서 문제를 추출했을 때의 상태를 기준으로 만들었습니다. 먼저, 아래 그림을 봐주세요. 위 그림에서 문제 배치 상태를 보면, 문제 사이의 간격도 일정하지 않고, 단 사이에 문제가 걸쳐 있기도 합니다. 위 문제 샘플 파일을 먼저 오답노트 매크로를 이용해서 문제를 추출해보면 아래 그.......

오답 문제 추출 프로그램+문제 자동 배치 기능까지 [내부링크]

파이썬으로 만든 오답 문제 추출 프로그램에 얼마 전에 완성한 문제 자동 배치 매크로 기능까지 넣어서 실행해 보았습니다. 한글(hwp)프로그램에서 매크로로 실행해도 되지만, 더 편한 것을 추구하는 것이 매크로의 목적이다보니 파이썬을 활용해서 버튼 한번에 모든 기능을 수행하고자하는 욕심(?)을 내봤습니다~!! 그래서 기존에 오답문제 추출 프로그램에 문제 자동 배치 기능까지 포함해서 수정하고 실행해 봤습니다. 위 그림을 보시면, 프로그램 실행 버튼 한 번에 오답 문제가 추출되고 문제가 자동 배열까지 잘 된 것을 확인할 수 있습니다. 한글(hwp) 프로그램은 편집의 다양성이 있어서, 언제든 예외 상황이 발생할 수 있습니다. 그래서.......

로또 번호 자동 생성하는 매크로(난수 매크로) [내부링크]

오늘은 조금 자극적인 제목을 달아 봤습니다~ 프로그램 언어는 대부분 난수(무작위적인 번호, Random)기능을 제공하고 있습니다. 한글(hwp) 매크로 스크립트 또한 자바스크립트(JavaScript) 언어를 지원하고 있어서 자바스크립트(JS)의 난수 기능을 이용하면 로또 번호를 계속 자동 생성할 수 있지요^^ 로또 번호는 1번부터 45번까지 총 6개 숫자를 입력하도록 되어 있잖아요. 아래 그림을 봐주세요. 복권집에서 로또 번호 자동 생성하는 원리도 동일한 방법일 듯 합니다. 오늘 글을 올린 이유는 로또 번호 생성기를 알리기 위함이 아니라 난수 생성을 이용해서 문제를 무작위적으로 뽑기 위함입니다.(로또 번호 생성은 흥미 일으키기 위한 하나.......

그림 크기 변경 매크로의 예외 대응 개선 [내부링크]

그림 크기 변경 매크로의 예외 상황에 대해 설명만 드리고, 매크로를 수정해서 설명한다고 하고 시간 꽤 오래 걸렸네요.^^;; 사실 왜 그런지 원인도 알고 있었고 개선할 방법도 알고 있었는데, 생각보다 잘 쓰이지 않을 매크로라고 생각되서 계속 미뤄두고 있었어요. 그래도 대응 개선을 하겠다고 글을 써 놓은 게 있어서 올려야지 하면서 오늘에서야 글을 올리네요. 지난 번에 문제점은 2가지 였어요. 그래서 코드를 조금 수정해서 실행해 봤습니다. 아래 그림은 수정해서 실행한 예입니다. 위 그림을 보면 머릿말과 꼬릿말에 그림과 타원(그리기 개체)가 있는 상황이면서 본문에도 그림 개체가 아닌 그리기 개체(타원)가 포함되어 있는 것을 확.......

Doitcoding님의 매크로 코드에 대한 의견입니다. [내부링크]

우선 첫 번째, % 기호를 하나만 사용하면 나중에 본문 중에 %가 포함되었을 때, 개수가 잘못 세어질 수 있으니, %% 로 정하시는 게 좋을 듯 합니다. 단원명 앞에 %%를 찾으면 되니, 단원명 뒤에 %는 입력 안하는 게 작업 시간을 줄일 수 있지 않을까 합니다. 그리고 두 번째는 문자열 개수를 찾는 일인데, 자바스크립트의 match 함수를 사용하면 좋을 듯 합니다. 아래 그림은 문자열을 세서 입력하도록 했는데, 변수에 저장해서 수정하시면 될 듯 해요. 첨부파일로 샘플 테스트 hwp 파일을 수정해본 것과 msr 파일을 첨부했습니다. 매크로의 성공을 기원합니다~~ 화이팅!!!

오답노트 매크로 공개 및 코드 해석 - 1 [내부링크]

지난 '오답노트 매크로' 코드 공개에 이어서 오늘은 '오답노트 매크로' 코드에 대한 해석을 하도록 할께요. '오답노트 매크로'는 자바스크립트(JavaScript, 약칭 JS) 프로그램 언어로 작성되어 있기 때문에 기본적으로 자바스크립트(JS) 기본 문법을 알고 계셔야 합니다. 자바스크립트 기본 문법이 아직 익숙하지 않으신 분들은 '포털' 검색이나 '유튜브' 혹은 '도서'를 통해 함께 참고하면서 읽으시면 좋을 듯 합니다. 그리고 최소한 알아야 하는 자바스크립트 언어 문법을 제 게시판에도 업로드한 글이 있으니 아래 링크를 참고하셔도 좋을 듯 합니다. 아래 코드는 '오답 노.......

오답노트 매크로 공개 및 코드 해석 - 2 [내부링크]

지난 첫 부분의 코드 해석에 이어서 설명드릴께요. '오답노트 매크로'는 총 3부분으로 나뉜다고 말씀드렸습니다. 각 세 부분은 함수로 되어 있습니다. 이 중에서 3번 함수가 매개변수를 포함한 함수여서 이해하기가 가장 어려울 듯 합니다. 아래 코드는 '오답노트 매크로 공개 및 코드 해석 -1' 에서 설명드린 부분 다음 코드입니다. 그럼 제일 위 코드의 제일 첫줄부터 설명드릴께요. curCtrl 변수에 3번째 함수인 findNearbyCtrlRootList에 매개변수인 CtrlID인 secd 를 prev(앞으로 탐색) 하라는 뜻입니다. 여기서 컨트롤 ID(Ctrl ID)에 대해 아셔야 하는 데요. 아래 표를 봐 주세요. 아래표는 한글과 컴퓨터에서 제공하.......

단원별 문제 추출 방법 [내부링크]

단원별 문제 추출 프로그램을 이용해서 단원별로 문제를 추출하는 방법을 설명드릴께요. 아래 그림을 봐주세요. 단원별로 추출하는 방법은 텍스트 입력창에 아래 처럼 입력하시면 됩니다. 그런데 만약에 2개 이상의 단원을 뽑고 싶을 때는 위에 처럼 단원명을 넣으시면 됩니다.

오답노트 매크로 공개 및 코드 해석 - 3 [내부링크]

오늘은 두 번째 selectNearbyProblem()의 코드 설명을 드리도록 하겠습니다. 우선, 첫 번째 부분의 코드를 다시 생각해 보셔야 합니다. 알고리즘이 매우 긴밀히 연결되어 있기 때문에, 이 함수 단독으로만 생각하면 잘 이해하기가 어렵습니다. 첫 번째 오답노트매크로() 함수에서 새 탭문서에서 사용자가 입력한 번호를 읽어들이고 나서, SetPosBySet 명령으로 해당 번호로 이동했습니다. 이 코드는 for 문 안에 들어 있기 때문에 변수 i 가 증가하면서 반복되고 있는 것이죠. 그리고 if 조건문 안에 selectNearbyProblem() 함수가 들어있죠. 문제가 존재하면 해당 문제를 복사하는 것이고, 없다면 종료하도록 해놨었죠. 즉, selectNearbyProblem.......

난이도별 문제 추출 방법 [내부링크]

한글 파일에 작업한 난이도별로 별표 작업을 해놓았고( 1개부터 3개의 난이도), 만약 특정 단원과 함께 별표의 개수를 1개에서 3개까지 뽑고 싶을 때, 찾는 방법을 지금부터 설명드릴께요. 지난 번에 단원명으로 추출하는 방법을 이미 설명드렸고, 여기서 별표() 난이도까지 포함해서 추출하는 방법입니다. 제가 예시로 위와 같은 검색 방법으로 텍스트 창에 입력해서 실행해 볼 건데요. 자세히 설명을 드리면 한글 찾기의 조건식인데, *. 은 모든 것의 의미이고, \b는 빈칸을 의미합니다. 즉, 한글 파일에 보면 단원명 직선의 방정식 뒤에 빈칸 하나를 띄우고 별표() 작업을 해놓았잖아요. 그것을 조건식으로 표현해 놓은 것입니다. 그.......

컨트롤(Ctrl API) 10번째 이야기- GetAnchorPos [내부링크]

사실 오늘 '오답노트 매크로' 마지막 함수에 대해 설명 글을 올리고 있다가 그냥 설명을 드리면, 이해가 안되실 분들이 많이 계실 듯 해서 이해를 돕기 위한 컨트롤 개체에 대한 설명을 먼저 드리려고 이 글을 먼저 씁니다. 별로 친숙하지 않은 Hwp CtrlCode Method 중에 GetAnchorPos 메서드에 대한 설명입니다. 우선 GetAnchoPos 메서드가 어디에 어떻게 사용되는 지를 설명드릴께요. 이름에 Get 은 '얻는다'라는 뜻으로 사용됩니다. 그러니까. 뒤에 붙은 Anchor(닻) Pos(Position의 줄임말)를 얻는 다는 건데요. Anchor는 프로그램 언어에서 보통 메모리 주소 혹은 linked ist 에서 서로 연결된 주소 정도를 anchor로 사.......

매크로 사용법 영상 [내부링크]

이 영상은 매크로가 생소한 분들을 위해 매크로 저장 파일인 msr 파일을 불러와서 실행해보는 안내 영상입니다. 동영상은 오답노트 매크로 파일을 블로그에서 다운 받아 한글 프로그램에서 매크로 파일을 불러오고, 오답노트 매크로를 실행해본 예시 영상입니다. 영상 속에서 실행한 매크로 파일은 아래 바로가기를 통해서 msr 파일을 다운 받아 실행하시면 됩니다. 바로 가기 ------------> B4 테스트 양식지, A4 테스트 양식지 바로 가기 ------------> 미주문번반복문완성v3 바로 가기 ------------> 미주높이맞춤반복문

WScript.Shell 개체-첫번째 이야기 AppActivate [내부링크]

위 글은 얼마 전에 '거위의 꿈'님이 댓글로 남기신 글입니다. 외부에서 접근할 때(저는 파이썬으로 한글에 주로 접근합니다.) 한글 문서가 새로 열리면서 한글 문서를 제어하는 데, 이미 열려진 문서는 제어가 안되는 것인지 질문을 해주셨습니다. 당시에는 열려있는 다른 한글 문서를 활성화 해 본 일이 없었고, 필요성을 못 느끼다가 '거위의 꿈'님 댓글을 보고 나서 이게 가능한 지 알았봤습니다.(엄밀히 따지면, 오늘 설명드리는 부분은 외부 프로그램에서 제어하는 방법이 아니고, 윈도우 OS 자체 기능으로 활성화를 제어하는 방법입니다.) 오늘 설명드릴 WSH(Windows Scripting Host)는 윈도우 운영체제에서 제공하는.......

파이썬으로 WScript.Shell 개체 메서드 사용법 [내부링크]

한글스크립트 창에서 WScript.Shell 개체 메서드 사용법은 '매크로 활용' 게시판에 설명되어 있습니다. 이번 글은 파이썬에서 WScript.Shell 개체를 이용해서 한글에 명령을 내리는 방법입니다. 아래 코드 먼저 봐주세요. 위 코드 명령은 한글 새 문서가 먼저 실행이 되고 나서 이미 열려 있는 006.hwp 문서의 윈도우를 활성화하고 단축키 Ctrl + Enter를 입력해서 강제 줄 나눔 명령을 내리고, 매크로 단축키 Alt + 1을 입력해서 매크로 1번을 실행하도록 합니다. 아래 그림은 코드 명령을 실행해 본 것입니다. 위 그림을 보시면, 한글 새 문서가 열리고 나서, 006.hwp 파일 안에서 빠른 정답 매크로(1번 매크로)가 실행되는 것을 확.......

WScript.Shell 개체-두번째 이야기 SendKeys [내부링크]

WScript.Shell 개체 첫번째 이야기 AppActivate 에 이어서 두 번째는 SendKeys 입니다. WScript.Shell 에 대한 글은 마이크로소프트 매뉴얼을 참고했습니다. 아래 링크 걸어 둘께요. 링크된 사이트에 키를 입력하는 목록이 나와 있는 데, 그것을 아래 표로 다시 정리했습니다. To specify keys combined with any combination of the SHIFT, CTRL, and ALT keys, precede the key code with one or more of the following codes. To specify that any combination of SHIFT, CTRL, and ALT should be held down while several other keys are pressed, enclose the code for those keys in parentheses. For example, to specify to hold down SH.......

WScript.Shell 개체-세번째 이야기 Run 메서드 [내부링크]

WScript.Shell 개체 세번째 이야기는 윈도우 응용 프로그램을 실행시키는 Run Method 입니다. Run 메서드는 윈도우의 다른 응용 프로그램들을 실행할 수 있습니다. 그러면, 한글 매크로를 활용하기 위해 다른 한글을 실행시키켜서 매크로를 실행시키면 어떨까하고 생각을 해봤습니다. 그러면, 더 다양한 작업을 할 수도 있을 듯 해서요.(파이썬(Python)을 사용하면 훨씬 편하고 더 간단합니다. 다만, 한글 프로그램 단독으로 가능한 지 알아보는 데 의미를 둔 것이에요.) 그래서 아래 코드를 매크로 스크립트 창에 입력해서 실행해 봤습니다. 위 코드처럼 실행을 하면, 문제 상황이 벌어집니다. 우선 첫 번째로 매크로 실행 창에서 명령을 내리면.......

원하는 미주로 이동 매크로 공개 [내부링크]

이 매크로는 이미 완성 형태이고, 오류도 거의 없어서 공개하려고 생각을 하고는 있었습니다. 그런데, 특정 코드 부분이 제가 만든 것이 아니라 다른 분의 코드를 참고해서 만든 부분이 있어서, 공개를 해야 하나 하고 고민을 하던 중이었습니다. 그럼, 지금부터 원하는 미주 혹은 미주 번호로 이동 매크로에 대해 설명하도록 하겠습니다. 먼저 코드부터 공개합니다. 위 코드 중에서 참고한 부분은 prompt(inputbox)를 띄우는 아래 코드 입니다. 위 코드 부분을 만드실 때 고민하며 고생하셨을텐데, 만드신 코드를 공개해주신 '별이 빛나는 밤에'님께 감사드립니다. 이 매크로의 장점은 문제를 미주로 만들었을 때, 1번부터 시작하는 경.......

오답노트 매크로 공개 및 코드 해석 - 프롤로그 [내부링크]

오늘부터 오답노트 매크로(미주 번호로 문제를 만든 문제에서 원하는 번호의 문제를 복사해서 새 탭으로 추출 복사하는 매크로)에 대한 설명을 세 번에 나눠서 글을 업로드하려고 합니다. 개인적으로는 이 글을 쓰는, 이 순간을 큰 영광으로 생각합니다. 제 블로그에서 제가 만든 매크로가 아니라 다른 분이 만든 매크로를 처음 소개합니다. '오답노트 매크로'는 작년 3월에 코로나로 시간이 많이 나게 되면서 한글 매크로를 연구를 시작하게 되었을 때, 유튜브에서 '한글 매크로'를 검색해서 찾은 매크로입니다. 그 때의 충격은 이루 말할 수가 없었습니다. 한글 매크로에 대해 거의 아는 게 없었고 '오답노트 매크로.......

한글 2010 Object Model - XHwpTab 을 이용한 한글 문서 PDF 저장 [내부링크]

지난 번에 XHwpTab을 활용해서 한글 문서를 통합하는 매크로를 설명드렸습니다. 이번에는 한글 파일을 통합해봤으니, 오늘은 여러 한글 문서를 일괄적으로 PDF로 저장하는 매크로에 대해 설명 드릴께요. 먼저, 소스 코드 부터 공개합니다. 코드에 일일이 주석을 달아서 해석해 놓았으니, 보시면 될 듯 합니다. 그래도 이해가 안되는 부분이 있으시다면, 댓글이나 쪽지로 물어보셔도 되요~ 위 코드에서 중요한 부분은 재귀함수입니다. PDF 저장을 재귀함수를 통해 계속 실행하도록 만들었습니다. 사실, 재귀함수는 모두 반복문으로 변경할 수 있습니다. 처음에는 반복문(정확히는 for문)으로 만들었더니 콜 스택(Call Stack) 오버 플로우(OverFlow.......

한글 2010 Object Model - XHwpTab 을 이용한 한글 문서 인쇄(Print) [내부링크]

지난 XHwpTab을 활용해서 여러 한글 문서를 일괄적으로 PDF로 변환하는 매크로에 이어서 여러 한글 문서를 '공급 용지에 맞추어' 일괄 인쇄 매크로를 설명드리겠습니다. 더 자세한 내용은 아래 링크를 확인해 주세요. 아래 소스 코드는 앞서 XHwpTab 매크로 구조에서 함수 명령을 인쇄로만 바꾼 것입니다. 위 코드는 한글 탭문서의 전체 페이지를 '공급용지에 맞추어' 인쇄하는 매크로 입니다. 아래 코드는 한글 탭문서에서 각 한글 문서의 마지막 미주로 이동해서 마지막 미주가 존재하는 페이지까지(현재까지 인쇄 옵션) '공급용지 맞추어' 인쇄하는 매크로 입니다. (이 매크로는 미주가 존재하고 문제가 미주로.......

콜백함수(callback function) [내부링크]

콜백함수는 함수의 한 종류입니다. 이해가 조금 어려울 수도 있지만, 한글 매크로를 사용할 때는 사용할 일이 많지 않지만 한글 API 문서 안에 콜백 함수가 있어서 이해하는 데 도움이 되지 않을까해서 콜백함수에 대한 설명을 하기로 했습니다. 1. 콜백(callback) 함수란? 콜백함수는 주로 함수 내부의 처리 결과값을 함수 외부로 내보낼 때 사용합니다. 일종의 return문과 비슷한 기능을 한다고 할 수 있습니다. <참고문헌 : 김춘경 지음 | 위키북스 | 2015년 10월 16일 출간 > 2. 콜백(callback) 함수의 문법 3. 콜백함수의 예시 코드 위 코드는 함수를 3가지로 나누어서 만들어본 예시입니다. 처음 함수는 아래 두 함수(콜백함수와 메.......

객관식 문제를 주관식으로 변환하는 매크로 [내부링크]

객관식 문제를 주관식으로 변환하는 매크로는 이미 업로드 한 적이 있는데, 코드 설명을 하지 않았고, 서로 이웃분들께만 공개한 매크로입니다. 이 매크로를 이웃분들께 공개를 하지 않았던 이유는 알고리즘을 비효율적으로 그냥 단순하게 만들어서 좀 창피한 감이 있어서 였습니다. 그런데, 이 매크로가 상당한 노가다를 줄일 수 있어서 알고리즘이 좀 맘에 안 들어도 많은 분들께 공유하면, 잘 쓰일 듯 해서 이웃 공개로 전환하고자 글을 씁니다. 이 매크로는 객관식 문제를 주관식으로 바꾸는 매크로입니다. 테스트지를 만들고 풀려보면, 객관식이면 잘 풀던 학생들이 주관식으로 바뀌면 못 푸는 경향이 많음을 보고, 처음 수업을 하고 객관식.......

한글 매크로 오류 유형 - 스크립트 이름 [내부링크]

한글 매크로 오류에 대해 문의 주시는 분들이 계셔서 이번 참에 정리해 볼까합니다. 위 사항들은 기본적으로 진행해 주셔야 합니다. 이번 글은 한글 매크로에서 나타나는 오류 유형 중에서 '매크로 이름'과 관련한 부분을 설명 드리려고 합니다. 아래 그림을 봐 주세요. 빨간 네모 박스는 '매크로 실행'창에 매크로 이름이고, 빨간 밑줄은 스크립트 코드 편집창에 매크로 이름입니다. !!! 2개의 이름은 반드시 같아야 합니다. !!! 가장 많이 하는 실수가 빨간 밑줄에 '스크립트 코드 편집' 창 안에서 임의적으로 이름을 바꾸는 경우입니다. 그렇게 이름을 변경해서 2개의 이름이 달라지면, 바로 아래 처럼 오류 창.......

조판부호 지우기 - 매크로 자동 생성 코드 분석 [내부링크]

한글(hwp) 프로그램은 한글 개체를 만들면 조판 부호가 함께 생성됩니다. 조판부호는 매크로 코드를 작성할 때, 굉장히 유용한 부분입니다. 그림, 표, 수식, 미주, 미주번호 뿐만 아니라 문단번호, 개요번호, 바탕글, 머리말, 꼬리말, 책갈피 등등 주요 기능은 조판 부호가 생성되기 때문에 그 부분을 수정할 때 조판부호 보이기를 통해서 개체 지정만 잘 해주면, 코드로 수정이 수월합니다. 한글(hwp) 에서 단축키 Ctrl + G, C 를 누르면 '조판 부호 보이기'가 되면서 개체 주변에 빨간색으로 이름이 나옵니다. 아래 그림을 봐주세요. 위 그림은 조판부호 보이기와 조판부호 숨기기를 실행해 보고, 그리고 조판부호 중에 '머리말.......

한글 2010 Object Model - XHwpTab 을 이용한 한글 문서 통합 매크로 [내부링크]

지난 글에 이어서 바로 한글 문서 통합 매크로 소스 코드 부터 설명드릴께요. 매크로의 코드 구조는 단순합니다. 간단하죠? 주석으로 설명도 되어 있으니, 충분히 잘 이해하실거라 생각합니다. 다음으로 이 매크로의 사용법에 대해 설명을 드릴께요. 우선, 한글(hwp)에서 문서 불러오기를 할 때, 환경설정을 통해서 새 창으로 열기를 새 탭으로 열기로 바꿔놓으면 편합니다.(일일이 탭문서 생성하고 불러오는 것은 귀찮은 일이니까요.) 위 그림처럼 탭문서로 불러오기 설정을 하고 한글 문서를 불러오면, 순서대로 이쁘게 탭문서가 생성됩니다. 주의사항은 탭문서로 불러오기 설정이 되었다 하더라도, 폴더에서 여러 한글파일을 셀렉트해서 &#x27.......

한글 업데이트 [내부링크]

한글 매크로를 사용하려면 꼭 최신 업데이트를 해야 합니다. 한글은 'ㅎ'자로 시작하기 때문에 ...

자바 스크립트의 기본 [내부링크]

대부분의 프로그램 언어가 기본 구조가 다 비슷 비슷합니다. 이번 자바스크립트를 잘 정리하시면 활용 분야...

단축키, 새 탭 만들기 [내부링크]

새 탭을 생성하는 단축키는 Ctrl + Alt + T 입니다. 스크립트 명령어는 HAction.Run("FileNew...

한글과 컴퓨터 개발자 매뉴얼 [내부링크]

네이버 나 구글에서 "한글과 컴퓨터"를 검색하시면 제일 위에 한글과 컴퓨터 홈페이지가 나와요....

단축키, 개체선택 [내부링크]

개체 선택 단축키는 F11 입니다. F11의 코드 명령어는 HAction.Run("SelectCtrlReverse"...

1. 변수 [내부링크]

1) 변수의 정의 2) 변수 만들기 3) 변수 만들 때 주의 사항 4) 변수에 저장할 수 있는 데이터 종류 1) 변수...

코드로 커서를 이동하는 방법(1)-MovePos [내부링크]

MovePos(1) - HwpCtrl 문서 내용 MovePos : 캐럿의 위치를 옮긴다. (한글에서 커서를 원하는 곳으로 ...

코드로 커서를 이동하는 방법(2) - Para, Pos [내부링크]

MovePos(2) - moveID, Para, Pos 1) moveID 어디로 이동할 지 정하는 숫자를 말합니다. 아래 표에 ...

매크로 꾸러미 저장하기, 불러오기 [내부링크]

내 매크로 실행 리스트에 있는 모든 매크로를 "꾸러미"에 저장을 하면, 다음에 다시 불어와서 지...

코드로 커서 위치 확인하는 방법-GetPosBySet [내부링크]

GetPosBySet - List, Para, Pos 매크로를 만들면서 확실히 알아야 하는 부분은 문서 내의 위치입니...

코드로 커서 이동해 본 영상 [내부링크]

GetPosBySet 과 MovePos 한글에서 실제로 List, Para, Pos가 어떻게 사용되는 지 영상을 확인해 ...

2. 주석 달기 [내부링크]

주석은 작성한 코드에 설명을 달아놓기 위해 사용하며, 실행되지 않는 소스를 말합니다. 주석은 1. 한줄 주...

3. 연산자 [내부링크]

연산자의 종류는 1. 기본 사칙 연산자 : +, - ,*, /, % 2. 복합 연산자 : +=, -=, /=, %...

단축키, 강제 쪽 나눔 & 단 나누기 [내부링크]

<강제 쪽 나눔> 강제 쪽 나눔 단축키는 Ctrl + Enter / Ctrl + J 입니다. 코드 명령어는 HActi...

단축키, 문단 나누기 와 강제 줄 나눔 [내부링크]

<문단 나누기> & <강제 줄 나눔> 비교 문단 나누기는 Enter 를 누르면 되고, 코드 명령어...

한글 매크로(실제 활용되는 매크로) msr [내부링크]

한글 매크로 msr은 매크로 저장 파일의 확장자 명입니다. 한글 매크로에서 프로그램 언어인 자바스크립트는...

특정 글자를 찾아 문제 추출 [내부링크]

텍스트로 라벨링된 특정 문제만을 추출해서 통합하는 매크로 사용법입니다. 상 난이도에 해당하는 문제만 ...

그림을 인식해서 문제 추출 [내부링크]

텍스트 추출에 이어서 이미지를 인식하여 추출하는 매크로입니다. 문제마다 그림으로 된 이미지를 인식해서...

4. if 조건문 [내부링크]

< if 조건문의 정의 > if 조건문은 특정 조건에 맞는 경우에만 특정 구문을 실행하고 싶을 때 사용하...

4-1. if 조건문 사용시 주의사항 [내부링크]

if 조건문을 사용하다보면, 주의사항을 지키지 않아서 코드가 제대로 실행이 되지 않을 수 있습니다. 저도 ...

5. for 반복문(횟수가 정해진 경우) [내부링크]

< for 반복문 이란? > for 반복문은 반복 횟수가 정해진 경우에 사용하는 반복문입니다. 횟수를 정하...

6. while 반복문(횟수가 정해지지 않은 경우) [내부링크]

< while 반복문 이란? > 무한 반복을 처리하는 경우에 while을 사용합니다. 특정 구문을 무한 반복 ...

6-1. do~while 반복문 [내부링크]

< while 문과 do ~ while문의 차이점 > while 문은 시작 부분에서 반복 여부를 판단하지만, do/while...

6-2. while문에서 continue문과 break문 [내부링크]

< continue 문 정의 > continue 문은 반복 실행 중 특정 조건에서 실행구문을 실행하지 않고, 다음 ...

찾아가기, 다시 찾기, 거꾸로 찾기 [내부링크]

매크로를 만들 때, 처음에 가장 중요한 부분이 내가 원하는 것(미주, 표, 그림, 등등의 컨트롤)을 찾는 일 ...

7. 함수(function) [내부링크]

< 함수의 정의 > 특정 기능을 하는 구문(알고리즘)을 독립된 부품처럼 만들어서 재사용하고 만드는 ...

8. 클래스(Class)-String, Array [내부링크]

< 클래스(Class)의 정의 > 클래스는 함수의 묶음이라고 보면 됩니다. 함수들로 묶어서 함수처럼 코...

찾아바꾸기(Ctrl + H) [내부링크]

찾아바꾸기는 이름 그대로 원하는 검색 대상을 한번에 혹은 순차적으로 내가 원하는 단어나 문장, 기호로 ...

단축키, 쉬운 책갈피 [내부링크]

쉬운 책갈피 단축키는 쉬운 책갈피 바로 넣기(위치 기억) Ctrl + K, 1, 2, …, 9, 0 기억된 책갈피 위치...

원하는 미주 번호로 이동 [내부링크]

1. 미주가 1번부터 시작할 때 미주 이동 2. 미주가 1번부터 시작 하지 않을 때 미주 이동 미주의 시작번호,...

객관식을 주관식으로 변경 [내부링크]

객관식 문제를 주관식으로 변경하고 싶을 때, 객관식의 보기는 없애고, 보기에 있던 정답은 미주번호로 복...

코드로 블록 설정 위치 확인 - GetSelectPosBySet [내부링크]

한글 매크로를 만들 때 블록의 위치를 정확히 확인해야 할 때가 있습니다. 그럴때, GetSelectPosBySet...

문자열 개수를 세는 매크로 [내부링크]

한글 자체에 '찾기', '찾아바꾸기' 기능은 유용하게 쓰일 때가 많습니다. 그런데, 매...

원하는 미주 번호로 이동(통합 버전) [내부링크]

시작 번호가 1부터 시작하는 경우와 1이 아닌 경우 모두 적용 가능한 매크로를 새로 만들었습니다. 바로가...

한글 2018에서 로만체 버그(?) 대응 매크로 [내부링크]

한글 2018 수식 창에 들어가면 보통 글씨체가 이탤릭체로 입력이 되는데, 일부분을 로만체로 바꾸기 위해 &...

코드로 블록 읽기(GetTextFile, saveblock) [내부링크]

GetTextFile 정의 GetTextFile은 블록저장된 한글 문서내의 '서식정보가 없는' TEXT ...

코드로 읽은 내용을 다시 입력하기(SetTextFile, InsertFile) [내부링크]

SetTextFile 정의 SetTextFile은 GetTextFile로 읽은 내용을 다시 한글 내에 붙여넣기 하는 기능...

미주로 만든 문제 번호의 글씨 크기를 바꾸는 매크로 [내부링크]

미주로 문제 번호를 만들었을 때, 미주의 글씨 크기나 모양을 바꾸려면 일일이 블록 지정해서 바꿔야 합니...

미주로 만든 문제 번호의 글씨체를 바꾸는 매크로 [내부링크]

지난 번에 글씨 크기를 바꾸는 방법에 이어서 글씨체를 바꾸는 방법에 대해 설명할께요. 글씨 크기는 매크...

강제 쪽 나눔과 단 나누기 개수 확인과 일괄 삭제 [내부링크]

한글 문서는 강제 쪽 나눔 기능이 있어서 페이제를 넘어갈 때, Ctrl + Enter 를 누르면 다음 페이지로 강...

오답노트 생성 매크로 [내부링크]

오답노트 생성 매크로는 상당히 복잡합(?) 매크로입니다. 이 매크로를 만드는 데 꽤 오랜 시간이 걸렸습니...

단원별, 난이도별 문제 검색 방법 [내부링크]

문제를 추출할 때, 미리 라벨링 해 놓은 단원 이름과 난이도(의 개수로 표시해 놓은)를 검색하는 방법입...

Hwp 파일 통합 프로그램 사용법 [내부링크]

Hwp 파일 통합 프로그램은 기본적으로 Hwp 편집 양식이 동일해야만 제대로 작동을 합니다. 아래 그림을 ...

자바 스크립트(JavaScript, 약칭 JS) 중급 [내부링크]

자바스크립트의 초급, 중급은 전적으로 제 임의대로 나눈 기준입니다. 자바스크립트의 초급은 매크로 코드...

지역 변수와 전역 변수 [내부링크]

알고리즘을 짜다 보면, 변수로 인해 매크로가 제대로 실행이 되지 않는 대다수는 변수가 없어서 아래 처럼 ...

책갈피를 자동 입력하는 매크로 [내부링크]

한글에서 책갈피는 상호참조와 연결해서 사용할 수도 있고, PDF 변환을 하면 차례가 저절로 만들어져서 ...

메세지 박스에 대한 이야기-1 [내부링크]

한글 스크립트 매크로에서 메세지 박스에 대한 글을 올리려고 합니다. < 1. 메세지 박스의 종류(① Hwp...

메세지 박스에 대한 이야기-2 [내부링크]

< 1-1. Hwp Object의 메세지박스를 코드로 작성하는 방법 > 지난 글에 메세지 박스에 대한 HwpOb...

매개 변수가 있는 함수 [내부링크]

보통 함수는 호출되어 실행되기 시작하면 함수 내부는 함수 외부에서 접근할 수 없게 됩니다. 이때, 함수 ...

리턴(return)과 함수 [내부링크]

앞서 매개변수는 함수 내부로 데이터를 전달하는 기능을 한다고 했습니다. 리턴(return)은 이와 반대로 함...

문항 번호가 1번부터 시작하지 않을 때 [내부링크]

한글 문서에 문항 번호가 1번부터 시작하지 않는 경우가 있습니다. 그리고, 문항 번호가 문단 번호 넣기로 ...

2단 4문제 자동 배열하는 매크로 [내부링크]

한글(HWP)는 강제 쪽 나눔과 단 나누기를 통해 일일이 엔터를 쳐서 문단을 만들지 않더라도, 다음 쪽, ...

중첩함수 [내부링크]

중첩함수는 단어가 뜻하는 그대로 함수 안에 함수를 중첩해서 만든 함수를 말합니다. 중첩함수를 사용하는 ...

메세지 박스에 대한 이야기-3 [내부링크]

이번에는 한글(Hwp) 안에서 매크로가 실행 될 때, 메세지 박스가 뜨면서 매크로 실행이 중단되는 현상을 ...

메세지 박스에 대한 이야기-4 [내부링크]

< 3. 메세지 박스 개체(② WScipt.Shell Object의 Popup Method) > WScript.Shell Object...

메세지 박스에 대한 이야기-5 [내부링크]

앞서 WScript.Shell 개체의 팝업 메서드에서 팝업창의 종류에 대해 정리해서 글을 올렸습니다. 이번에는...

메세지 박스에 대한 이야기-6 [내부링크]

앞서 업로드한 글의 Shell Popup 에 사용된 조건문 코드를 간략히 설명할께요. if 조건문을 사용해서 단...

스크립트 코드로만 가능한 매크로-1 ( 한 매크로에서 다른 매크로를 실행 ) [내부링크]

앞서 Popup창을 WScript.Shell Object를 활용해서 만드는 방법을 설명드렸습니다. WScript.Shell ...

파이썬 설치 및 환경설정 [내부링크]

파이썬 설치는 여러 사이트에 이미 많이 설명이 되어 있고, 설명을 잘 해놓으신 분들이 많으니, 자세한 방...

상용구와 매크로-1 [내부링크]

상용구는 준말을 입력하고 본말을 단축키(alt + i)를 통해 불러 오는 기능을 말합니다. 한글에서 상용구는 ...

파이썬 GUI Tkinter [내부링크]

< TKinter 이란? > 파이썬은 기본 라이브러리로 TKinter를 제공합니다.(파이썬을 설치하면 함께 ...

4개 프로그램의 기능을 개선했습니다. [내부링크]

4개의 프로그램의 기능을 개선했습니다. < 기능 개선 사항 > 은 1. 모든 프로그램의 창의 크기를 조...

상용구와 매크로-2 [내부링크]

한글(hwp)에서 상용구는 준말을 이용해 본말을 가져오는 기능으로 <글자 상용구>와 문장 자체를 준말...

Tkinter Drag and Drop 리스트 박스 적용 예시 영상 [내부링크]

시간이 날 때마다 만들었던 프로그램에 드래그 앤 드롭(Drag & Drop, 이하 DnD)를 Tkinter 리스트...

Tkinter Drag & Drop(DnD) 리스트박스 적용 방법 [내부링크]

Drag & Drop는 고난도 기술이기 때문에 직접 코딩하기에는 제 능력이 안됩니다. 하지만 대부분 자주 ...

알고리즘(Algorithm) 생각 [내부링크]

한글 매크로와 파이썬의 알고리즘을 만들다보면, 어느 순간에 시간이 가는 지도 모르게 몰입되어 있는 나를...

스크립트 코드로만 가능한 매크로-3 ( 커서 이동 ) [내부링크]

한글(hwp) 안에서 커서를 이동하는 단축키가 존재합니다. 그 중에서 단축키로 이동할 수 없고, 코드 명령어...

컨트롤(Ctrl API) 첫번째 이야기-개수 세기 [내부링크]

컨트롤 개체(HwpCtrl Object)는 표, 그림, 미주 등등을 말합니다. '한글과 컴퓨터'에서 제공...

컨트롤(Ctrl API) 2번째 이야기-커서 이동 [내부링크]

지난 컨트롤 개체 이야기 첫번째는 컨트롤 개체 개수 세기(count)였습니다. 오늘은 두 번째 이야기 : 컨트...

파이썬으로 한글(hwp) 불러오기 [내부링크]

파이썬(python)으로 한글(hwp)을 불러오는 방법을 설명하겠습니다. 먼저, 아래 그림은 파이썬으로 한글을 ...

컨트롤(Ctrl API) 3번째 이야기-글자 취급 [내부링크]

오늘은 문서 내의 표나 그림을 모두 '글자 취급'으로 변경하는 매크로입니다. 이미 앞에서 컨트...

컨트롤(Ctrl API) 4번째 이야기-표 크기 변경 [내부링크]

오늘 다루는 내용은 조금 복잡합니다. 지난 3번째 이야기에 이어서 오늘은 '문서 내의 모든 표의 크기...

컨트롤(Ctrl API) 5번째 이야기-표, 그림 가운데 정렬 [내부링크]

어렸을 때, 워드프로세서 1급 자격증 시험을 본 적이 있습니다. 필기는 한 번에 합격했는데, 실기는 1번 떨...

파이썬으로 한글(hwp)내 그림(Image) 처리 [내부링크]

한글(hwp) 자체에서는 어려운 작업이지만, 파이썬과 함께 하면 가장 좋은 기능이 바로 이미지 처리(Image ...

하이퍼링크(HyperLink) 매크로 코드 [내부링크]

하이퍼링크(HyperLink) 코드를 공개합니다. 주의사항) 자신이 원하는 하이퍼링크 매크로를 만들려면 코드...

컨트롤(Ctrl API) 6번째 이야기- 그림 크기 변경 [내부링크]

오늘은 지난 5번째 이야기에 이어서 6번째 주제 '문서 내의 모든 그림의 크기를 일괄적으로 내가 원하...

한글 2018 로마체 버그 대응 매크로 개선 [내부링크]

한글 2018에서는 이전 버전에서는 없는 수식에서 로만체 관련 버그가 있습니다. 지난 글에서도 설명을 했지...

매크로를 일괄 실행하는 프로그램 [내부링크]

한글(hwp) 매크로에서 코드 명령으로 가능한 매크로 번호는 1번 ~ 11번 입니다. 이 프로그램은 매크로를 실...

포스팅 의뢰 받지 않습니다. [내부링크]

블로그 댓글, 쪽지, 메일 어떤 형태로 문의 주셔도 의뢰 받지 않습니다. 공개 댓글로 글을 올리시면, 바로 ...

그림 크기 변경 매크로의 예외 상황 [내부링크]

앞서 '컨트롤 6번째 이야기 - 그림 크기 변경'에 대해 글을 올렸고, msr 파일을 이웃 공개 했습...

빠른 정답을 잘 활용하기 위한 팁(Tip) [내부링크]

지난 글에서 빠른 정답 매크로를 이웃 공개 해 드렸습니다. 빠른 정답 매크로를 조금 더 잘 활용하기 위해 ...

컨트롤(Ctrl API) 8번째 이야기- 수식 볼드(bold) [내부링크]

8번째 컨트롤 이야기는 한글 문서 안의 전체 수식의 볼드(진하게)를 적용 혹은 해제 하는 매크로입니다. 매...

컨트롤(Ctrl API) 9번째 이야기- 미주 높이 [내부링크]

컨트롤 9번째 이야기입니다. 컨트롤 관련 글이 계속 되죠? 한글(hwp)은 컨트롤 개체(표,그림,미주,수식 등...

컨트롤 개체는 어떻게 빠른 명령이 가능할까요? -linked list [내부링크]

9번째 이야기까지 이어지는 컨트롤 개체(표, 그림, 수식, 미주 등등)에 대해 글을 업로드하면서, 어떻게 한...

문항 자동 배치 매크로를 위한 알고리즘 [내부링크]

한글(hwp) 매크로를 시작하게 된 결정적인 계기가 '문항을 자동 배치하는 매크로'입니다. 한글 ...

파이썬으로 한글(hwp) 불러오기 - 재수정 [내부링크]

며칠 전에 회사원 코딩님의(회사원 코딩님의 홈페이지 링크를 참고했습니다.) 도움으로 파이썬으로 한글을 불러올 때, 까만 화면이 생기지 않고 바로 한글을 불러오는 방법을 알았고, 이 부분을 다시 설명드리려고 합니다. 우선 아래 소스 코드부터 봐 주세요. 위 코드를 보면, 코드가 한결 간결해졌어요. 이전에 import win32con 부분을 없애고, 이 부분이 들어오면서, 한글(hwp) 창이 바로 뜨는 것을 확인했습니다. 아래는 실행해 본 그림입니다. 군더더기없이 hwnd 까지 정확하게 잡히는 것을 확인했습니다. 위에 True를 False로 변경하면 한글(hwp)창이 백그라운드로 변경됩니다. 명령 코드가 잘 작동하는 지 확인하려면, 위 코드를 실행해서.......

한글 2010 Object Model - XHwpTab [내부링크]

이번 글의 주제는 한글과 컴퓨터에서 제공하는 'HwpAutomation.hwp' 파일에 포함된 한글 2010 Object Model에서 XhwpTab 에 관한 공통 주제로 매크에 대한 글을 쓰고자 합니다. 이 블로그를 시작하면서, 한글 2010 Object Model 안에 메서드(함수), 프로퍼티(변수)에 대해 다루고자 하는 생각은 계속 갖고 있었습니다. 하지만 미뤄두었다가 얼마 전에 '회사원 코딩님'의 댓글이 기회가 되어서, 이젠 조금 자세히 블로그에서 설명하고자 합니다. 이번 글의 주요 주제는 'XHwpTab' 입니다. 결론부터 말씀드리면, 한글(hwp) 프로그램에서 현재 실행되고 있는 탭문서의 개수를 파악할 수 있는 Window Object 입니다.(O.......

첫번째 이야기 : 남은 미주 개수 세기-3(최종) [내부링크]

남은 미주 개수 세기 매크로의 문제점을 최정적으로 수정했습니다. ( 제가 만든 알고리즘은 하나의 예시 일뿐, 더 간결하고 효율적인 다른 방법이 얼마든지 있을 수 있습니다. ) 지난 글에서 마지막 미주 뒤에 커서가 있을 때, 0개가 아니라 전체 미주 개수가 나오는 문제점을 확인 했습니다. 왜? 마지막 미주 뒤에서는 전체 미주 개수가 나올까요? 그 이유는 '찾아가기' 명령 코드가 더 이상 미주가 없으면, 문서 제일 처음으로 커서를 옮기면서 남은 미주 개수가 전체 미주 개수가 되는 것입니다. 어떻게 해결하면 될까요? 가장 간단하게는 문서 처음을 돌아가지 못하도록 하는 방법과 마지막 미주 위치를 확인해서 현 위치와 비교하.......

두번째 이야기 : 한 문항 블록 지정하기-1 [내부링크]

이번 글은 한 문항을 정확하게 블록 지정하는 매크로입니다. 미주가 문항 번호로 되어 있는 상황에서 한 문항을 블록 지정할 때, 시작은 미주 찾아가기로 쉽게 시작점을 찾을 수 있지만, 문제의 마지막 지점을 찾는 것이 가장 어려운 일입니다. 가장 쉽게 문제 마지막 지점을 찾는 방법을 생각하자면, 한글의 조건식을 이용하는 방법입니다. 엔터가 두 번 들어가는 지점을 찾는 것입니다. 조건식으로는 "^n^n" 입니다. 소스 코드부터 공개할께요. 코드에 주석을 달아 설명을 해놓았으니, 어렵지 않게 이해 하실 수 있을 거라 생각됩니다~ 아래 실행을 해 본 그림입니다. 위 그림은 커서 위치를 기준으로 아래 방향의 미주를 찾고, 그 미.......

두번째 이야기 : 한 문항 블록 지정하기-2 [내부링크]

한 문항 블록 지정하기 매크로 예외 상황 처리에 대한 글을 계속 이어서 설명할께요. 지난 글에서 2가지 문제점이 있는 것을 확인했습니다. 1. 한 문항 안에 엔터가 두 번 입력되어 있는 경우 2. 문항의 끝에서 바로 단 나누기를 실행해서 다음 문항까지 블록이 지정되는 경우 우선, 가볍게 첫번째는 ^n^n 을 ^n^n^n으로 바꿔서 찾으면 되지 않을까합니다. 한 문제 안에 엔터가 세 번 입력되는 경우가 있다면, 예를 들어서 1문제 안에 딸린 문제들이 있다면, 이 방법을 사용하면 안됩니다. ( 이 것을 해결하는 방법은 다음 글에서 다시 다루겠습니다.) 그리고 2번의 문제는 한문제 다음 문단에 바로 다음 문제가 이어져 있거나 단 나누기가 되어.......

두번째 이야기 : 한 문항 블록 지정하기-3 [내부링크]

지난 글에서 이어서 한 문항 블록 지정하기 매크로에 대한 설명을 드릴께요~ 총 20번까지 미주가 문제 번호로 되어 있다고 할 때, 마지막 미주 쪽에서 문제점이 발생합니다. 1. 19번과 20번 사이에서 매크로를 실행하면, 다음 미주가 20번 이므로 거기로 이동하고, 그 다음 미주를 찾으면, 더 이상 미주가 없기 때문에, 처음 미주로 돌아갑니다. 2. 20번 미주 뒤에서 매크로를 실행하면, 바로 처음 미주로 돌아갑니다. 위의 2가지 문제에 대한 제가 생각한 대응 방안을 설명 드릴께요. 아래 소스 코드를 봐 주세요. 코드가 좀 많이 길어졌죠?~~^^;;; 그래도 쪼개서 하나 하나 보면, 생각보다 간단한 코드입니다. 이 부분이 전체 코드 앞에 새로 입.......

파이썬으로 한글(hwp)내에 미주 개수 세기 [내부링크]

파이썬으로 한글(hwp)을 제어하는 방법에 대한 글을 쓰고, 1개월만에 글을 쓰네요. 게시판 만들어 놓고, 너무 오랜만에 파이썬에 대한 글을 쓰게 되어서 죄송합니다~^^;; 한글 매크로 알고리즘에 주로 신경을 쓰고 있다보니, 파이썬에 대한 글을 쓰는 데 조금 시간이 걸립니다. 한글 매크로 알고리즘에 대해 딱히 더 다루고 싶은 주제가 없다 싶으면, 그 때부터는 파이썬에 집중해서 글을 쓸까 생각하고는 있습니다. 파이썬으로 한글을 제어하는 방법은 그렇게 어렵지 않습니다. 하지만, 파이썬으로 한글을 제어하더라도 결국 한글로 만든 매크로 알고리즘을 파이썬으로 변경하는 것이기 때문에 기본은 한글(hwp) 매크로입니다. 오늘은 이미 한글.......

두번째 이야기 : 한 문항 블록 지정하기-4(최종) [내부링크]

지난 '한 문항 블록 지정하기-3' 글에서 문제점을 다시 한 번 확인해 볼께요. 아래는 지난 글에서 예외 상황 그림입니다. 한 미주(문제) 안에 딸린 문제 (1), (2) 이렇게 있고, 사이에 여러 문단(세 번 이상의 엔터)이 있는 경우에 매크로를 실행하면 문제 전체를 블록하지 못하고 ^n^n^n을 끝으로 인식해서 그곳을 문제 끝으로 인식합니다. 위 문제를 해결하기 위해서는 ^n^n^n 으로는 해결이 불가능합니다.(제 생각에 그렇다는 겁니다.) 그럼, 이 상황을 어떻게 해야 딸린 문제의 끝을 인식하도록 할 수 있을 까요? 먼저, 소스 코드 부터 공개합니다. 지난 한 문항 블록 지정-3 매크로의 주요 구조는 거의 동일한데, 여기서 문항의 끝.......

세 번째 이야기 : 문항 길이 측정-프롤로그 [내부링크]

문항 배치 매크로를 만들 때 가장 어려운 부분은 문항의 길이를 정확하게 측정하는 일입니다. 단순하게 '그냥 문제의 문단 수(Para)를 세면 되는 될 것이 아닌가' 하고 생각할 수도 있지만, 그렇지 않습니다. 문항 배치 매크로는 우선 2단으로 편집을 기준으로 만들 예정입니다. 해결해야 하는 문제 상황은 아래와 같습니다. 위의 3가지 문제 상황을 해결할 수 있는 방법을 생각으로는 가지고 있긴 하지만, 실제로 매크로를 만들었을 때, 어떻게 될 지는 아직 만들어 본 것이 아니어서 잘 모릅니다. < 매크로 코드 작성 계획 > 위 3가지 문제점을 다 해결할 수 있으면, 문항 배치 매크로는 각 문제가 차지하는 문단수를 파악하고.......

세 번째 이야기 : 문항 길이 측정-1 [내부링크]

오늘은 표, 그림과 같은 컨트롤 개체가 문제 중간 부분에 있을 때, 표와 그림의 세로 길이를 측정해서 차지하고 있는 줄 수를 파악하는 방법에 대해 설명드릴까 합니다. 한글(hwp) 프로그램에서 아쉬운 부분이 있습니다. 한글 문서 안을 보면 세로 눈금자가 있는데, 그 눈금자를 읽는 API(Application Programming Interface)가 제공되지 않는 점입니다. 한글과 컴퓨터에서 제공하는 API 문서의 함수를 꼼꼼히 잘 봤는데, 없는 듯 하더라구요. 아래 그림을 한 번 봐 주세요. 위 그림을 보시면, 커서가 이동하면 커서가 존재하는 문단의 위와 아래를 세로 눈금자가 정확하게 꺽쇠로 표시해 줍니다. 커서의 위치를 눈금자로 파악할 수 있고, 한 문.......

첫번째 이야기 : 남은 미주 개수 세기-1 [내부링크]

'문항 배치 매크로'를 위한 첫 번째 여정에서 그 첫번째는 남은 미주 개수 세기 입니다. 남은 미주 개수를 세는 것도 디테일의 악마가 꽤 있어요. 우선은 가장 간단하게 생각할 수 있는 코드를 작성해보고, 문제점을 알아볼께요. 정말 간단하게 1차적으로 생각할 수 있는 매크로입니다. 1. 미주 번호로 이동하기 2. 카운트 변수 c=0 을 저장하고 3. while 반복문에서 다음 미주 번호로 이동 명령하면서 카운트 변수 c를 증가 4. 최종적으로 변수 c 에 담긴 숫자를 메세지 창으로 알리기 현재 커서가 본문(List == 0)에 있고, 커서 뒤쪽에 남아 있는 미주를 세는 매크로입니다. 코드가 간단한 만큼 당연히 문제점이 있습.......

첫번째 이야기 : 남은 미주 개수 세기-2 [내부링크]

지난 '남은 밎 개수 세기-1'글에서 문제점에 대한 오류 수정을 시작합니다. 2가지 문제점이 있었죠~ 1. 마지막 미주 다음에서 매크로를 실행하면, 0개가 아니라 총 미주 개수가 된다는 점 2. 매크로를 실행하고 나면, 커서가 제일 마지막 미주 번호로 가 있다는 점 2번 문제점을 먼저 해결해 볼께요.(해결이라는 표현이 좀 불편할 수 있는데, 여러 가지 방법 중에 한 가지일 수 있습니다. 알고리즘의 자유도가 높은 만큼 충분히 감안해 주세요.) 아래 코드를 봐주세요. 지난 매크로에 없던, GetPosBySet() 이라고 하는 HwpCtrl 이 새로 들어가 있습니다. 간단히 설명 드리면, 커서의 위치 정보를 가져오는 한글(hwp) 컨트롤(Ctrl) 기능.......

한글 2018 단축키와 HAction [내부링크]

단축키는 한글에서 사용자가 편하게 작업할 수 있는 정말 유용한 기능입니다. 각 단축키는 한글에 명령을 ...

단축키, 블록 설정 [내부링크]

블록 설정 단축키는 F3 입니다. 스크립트 명령어는 HAction.Run("Select"); 입니다. F3을 ...

매크로 이름 변경하기 [내부링크]

매크로 이름을 변경할 때는 주의해서 바꿔야 합니다. 잘못 바꾸면 매크로가 실행되지 않습니다. 매크로가 ...

매크로 코드 편집 수정후 적용, 실행 [내부링크]

매크로 코드 편집 창에서 보이는 적용과 실행 버턴에 대해 설명하겠습니다. <매크로 적용> 매크로 적...

찾기(Ctrl + F) [내부링크]

찾기는 찾아가기와 다릅니다. 찾기는 단어, 문장, 기호 등등을 문서 내에서 검색하는 기능이고, 찾아가기는...

한글 매크로 보안 설정 [내부링크]

한글 매크로 보안 설정을 "낮음"이나 "보통"으로 변경해야 합니다. 한글을 실행하고 ...

한글 스크립트 매크로와 자바스크립트 [내부링크]

한글은 키 매크로와 스크립트 매크로로 나눌 수 있습니다. 키 매크로는 반복하고 싶은 작업을 키보드로 눌...

매크로 저장, 불러오기, 지우기 [내부링크]

<매크로를 파일로 저장하기> 단축키 Shift + Alt + L 을 누르면 매크로 실행 창이 뜹니다. 빨간색...

한글 업데이트가 안될 때 [내부링크]

한글이 여러 가지 이유로 업데이트가 안되는 경우가 꽤 있어서 한글과 컴퓨터에 문의를 해봤더니, 아래 그...

컨트롤(Ctrl API) 7번째 이야기- 빠른 정답 [내부링크]

7번째 주제는 컨트롤 개체 중에서 '미주 번호'의 내용을 읽어서 빠른 정답을 만드는 매크로 입니...

보안 승인 모듈 설정 [내부링크]

매크로를 실행하다보면, 아래 그림처럼 보안 승인창이 뜨면서 확인을 눌러야 하는 불편한 상황이 생깁니다....

여러 개의 한글 문서에서 오답 노트 만들기 [내부링크]

앞서 한글 매크로 게시판에 오답노트 생성 매크로를 업로드 했습니다. 오답노트 생성 매크로는 한 개의 한...

여러 개의 B4 HWP 문서 인쇄 프로그램 [내부링크]

B4 문서로 작성된 한글(Hwp)를 한꺼번에 인쇄하는 프로그램에 대한 사용법을 설명할께요. 먼저, 이 프로...

프로그램을 만들기 위한 언어 : 파이썬(Python) [내부링크]

한글(HWP) 프로그램 자체에서 제공하는 매크로 기능은 매우 훌륭합니다. 자체 매크로 만으로도 많은 반...

재귀 함수 예 - 피보나치 수열 [내부링크]

지난 번 팩토리얼에 이어서 피보나치 수열에 대해 설명드릴께요. 피보나치 수열은 0, 1, 1, 2, 3, 5, 8, 13...

재귀함수 예 - 팩토리얼과 그 수의 나열 [내부링크]

재귀함수(Recursive function)의 가장 대표적인 예로 팩토리얼(factorial)이 있습니다. 팩토리얼은 예를 ...

재귀 함수(Recursive Function) [내부링크]

오랜만에 자바스크립트(JavaScript)에 대해 글을 업로드 하네요. 오늘은 사실 그 동안 미루고 미뤄왔던, ...

한글 찾기에서의 '조건식' [내부링크]

찾기( 단축키 : Ctrl + F ) 창을 열고 '선택 사항'에서 '조건식 사용'을 체크해 놓...

수식 단축키 & 수식 매크로 코드 [내부링크]

수식 입력창 실행 단축키는 Ctrl + N, M 입니다. 수식이나 표, 그림 등등 컨트롤 개체는 HAction Tab...

하이퍼링크(HyperLink) 매크로 [내부링크]

한글(Hwp) 자체 기능 중에 하이퍼링크(HyperLink) 기능이 있습니다. 문서 안에 특정 단어나 그림을 클릭...

코드 명령으로만 가능한 한글 기능-2 ( 상호참조(CrossReference) 매크로 ) [내부링크]

< 상호참조란? > 한글 프로그램의 상호참조는 다른 페이지의 참조 대상들(표, 그림, 수식, 각주, 미...

한글 매크로 이야기 블로그의 안내 [내부링크]

한글 매크로 이야기 블로그는 한글(HWP) 스크립트 매크로를 활용하기 위해 알아야 하는 코드편집과 기능...