본문 바로가기

일상의코딩13

[pyhwpx] 한/글 자동화 문의 및 요청의 90%는 ㅇㅇ 관련이었어요. 안녕하세요? 일코입니다. 유튜브와 블로그를 운영하면서 받았던 문의 중 90%는 바로 "표"에 관한 내용들이었습니다. 표는 비단 행정뿐만 아니라, 한/글을 통해 작성되는 문서에서 가장 많이 쓰이는 컨트롤이죠. 그런데 기존의 한/글 오토메이션 API를 통해 표를 읽어오거나, 표를 작성하는 메서드는 다소 큰 진입장벽이 있었습니다. 예를 들어 비교적 최근 만든 pyhwpx에서 5행5열의 표를 만들고 "글자처럼 취급"을 적용하는 코드는 아래 세 줄이면 되지만, from pyhwpx import Hwp hwp = Hwp() hwp.create_table(5, 5, treat_as_char=True) 그런데, 기존 오토메이션API를 통해 동일한 표를 직접 생성하려면 무려 아래의 코드를 작성해야 합니다. (혹시 관심 .. 2024. 1. 25.
아래아한글 업무자동화를 위한 파이썬 모듈, pyhwpx 업무자동화 관련한 교육을 몇 회 진행해보면서 강하게 느낀 부분 중 하나는, 일반 사용자 대부분이 "긴 코드"에 대해 불편함을 느낀다는 건데요. 정부부처, 공공기관이나 기관 연수원에서는 장기간의 교육은 잘 만들어지지 않고, 7~8시간 안에 파이썬 기초부터 업무자동화 중급까지 진행해야 하는 상황, 업무자동화에 유용하게 써먹었던 이런저런 함수들을 모아서 간단한 클래스로 구현해놓고, pypi에 업로드해 두려고 합니다. 문서화나 동영상 촬영도 틈틈이 해 보고 싶고요. 우선 사용법은 아래와 같습니다. 1. 터미널에서 pip install pyhwpx로 모듈을 설치한다. 2. 파이썬에서 from pyhwpx import Hwp로 클래스를 임포트한다. 3. hwp = Hwp()로 한/글을 연다. 4. 한/글에서 제공하.. 2023. 11. 7.
[python+hwp] 생각보다 hwp 업무자동화가 어렵다면... 한컴오피스 업무자동화 튜토리얼을 블로그와 유튜브에 몇 년간 작성해 오면서 받았던 모든 피드백 중에 "감사하다"는 의견을 제외하면 "너무 어렵다"는 말씀이 가장 많습니다. 저도 이게 큰 고민거리인데요.. 제 설명이 미흡한 탓이라는 생각이 드니까 반성도 많이 하게 되고요. 제 기준에서 '의외로 쉽고, 이해하면 간단하기도 하다.'는 막연한 느낌은 아마 제가 입문자들의 레벨을 벌써 잊어버렸기 때문일 것입니다. 아마도 제가 "한/글 업무자동화"를 쉽다고 생각하는 첫 번째 이유는, 당장 방법이 생각나지 않거나, 막히더라도 어떤 과정으로 해답을 찾아가야 하는지 알기 때문인 것 같습니다. 그래서 이번 포스팅에서는 일반적으로 활용할 수 있는 한/글 업무자동화 코드작성 과정을 의식의 흐름대로 한 번 쭉 써내려가 보려고 합.. 2023. 2. 1.
그간 잘못된 정보를 알려드려 죄송합니다. 몇 가지 오류 정정 안녕하세요? 길다면 긴 기간 동안 아래아한글 자동화를 공부하면서 유튜브 영상으로, 블로그 포스팅으로 이것저것 남겨 왔는데, 현 시점에서 수정하고 싶은 부분이 몇 개 있습니다. (일종의 포스팅 정오표 같은 것...) 읽으셔도 크게 도움 되지 않겠지만, 한 번은 정리해야겠다 싶었는데 오늘에야 포스팅으로 남깁니다. 1. "누름틀에 예약어가 있다?" - 누름틀에는 예약어가 없다. 제 첫 유튜브 영상의 오류입니다. https://youtu.be/1pC_UXhiJH8 해당 영상에 고정댓글로 달아놓기는 했는데, 누름틀에는 예약어가 없습니다. 다만, 동일한 누름틀이 문서에서 여러 개 존재하는 경우, 의도한 대로 입력되지 않을 수 있습니다. (물론 한/글 API에는 동일명의 누름틀 중 몇 번째 누름틀에 텍스트를 채울지 .. 2022. 8. 31.
[QnA] Open메서드 실행시 오류:"매개변수의 개수가 잘못되었습니다." 해결법 안녕하세요. 제가 찾던 게 바로 이건데 딱 있어서 너무 놀랐습니다. 따라해보니까 이런 에러가 뜨는데 원인과 해결책을 알려주시면 감사하겠습니다. hwp.Open('c:/users/xxxxxxx/Documents/awards.hwp') Traceback (most recent call last): File "C:\ProgramData\Anaconda3\lib\site-packages\IPython\core\interactiveshell.py", line 2963, in run_code exec(code_obj, self.user_global_ns, self.user_ns) File "", line 1, in hwp.Open('c:/users/xxxxxxx/Documents/awards.hwp') File ".. 2022. 8. 2.
[QnA] 표 내의 일부 테두리를 점선으로 바꾸는 법 솔직히 저도 모든 파라미터셋을 외우는 게 아니어서, 이런 질문을 받으면 직접 실행해봅니다. 아래와 같은 과정으로요. 같이 한 번 해 봅시다. 1. 파이썬으로 한/글을 연다. 2. 스크립트매크로를 녹화해본다. 3. 파이썬 코드로 변환한 후 실행해본다. 4. 되면 끝. 안되면? 5. 액션과 파라미터셋을 검색해서 답을 찾는다. (오래 걸림ㅜ) 1. 파이썬으로 한/글 열기 import win32com.client as win32 hwp = win32.gencache.EnsureDispatch("hwpframe.hwpobject") hwp.XHwpWindows.Item(0).Visible = True 2. 스크립트 매크로 녹화를 누른 후 테두리를 점선으로 바꿔본다. 표를 하나 생성해보고, 원하는 셀선택한 시점 이.. 2022. 5. 13.
서식 유지한 채로 스타일을 모두 "바탕글"로 바꾸는 코딩 안녕하세요? 일상의코딩 신명진입니다. 회사 다니다 보면 가끔 이런 경우가 있었습니다. 수십페이지의 아래아한글 레거시 문서를 구조화하기 위해서 개요와 스타일을 새롭게 매기고 싶은데 기존에 스타일이 뒤죽박죽 매겨져 있는 상태인 거예요. 근데 스타일을 변경하면 문서가 깨지잖아요ㅜ 그래서 서식은 그대로 두고 스타일을 모두 "바탕글"로 변경한 후에 개요와 스타일을 다시 하나씩 매겨보고 싶었거든요. 지식인에도 저와 똑같은 고민을 했던 분이 계시더라고요. 무작정 모든 스타일을 삭제하거나 "바탕글"로 바꾸면 서식이 다 날아가버려서 문서를 다시 구조화하는 작업이 굉장히 복잡해지죠. 문맥과 수준을 기억한 채로 수정해야 하니까요. (도입부 설명이 조금 길었습니다.) 이런 경우는 문서가 짧으면 어떻게라도 수작업으로 비벼볼 수.. 2022. 4. 30.
hwp파일 열 때 한/글 자체 다이얼로그를 이용하면 qt도 tkinter도 필요없다!? 안녕하세요? 한/글에서 제공하는 API 중에는 대화상자를 열어주거나, 파일을 열거나, 대화상자를 띄워주는 메서드가 있습니다. 어쩔 수 없이 PyQt나 tkinter 등을 사용해야 하는 경우도 있지만 (여러 파일을 불러온다든지, 엑셀파일이나 다른 확장자를 불러와야 하는 경우 등) 기본적인 작업, 한/글 파일 하나를 불러와서 자동화작업을 하는 경우에는 거추장스럽게 GUI모듈을 임포트하지 말고 한/글에서 자체 제공하는 파일열기 다이얼로그를 사용하시면 코딩이 훨씬 간편해집니다. 사용법은 엄청나게 간단하거든요. 바로 hwp.Run("FileOpen") 입니다. 사용방법은 아래와 같습니다. Run 코드 한 줄이면 GUI가 뚝딱! 간편하지요? 한/글에서 제공하는 다양한 Run메서드가 궁금하시다면? hwp의 Run메서.. 2022. 4. 9.
파이썬으로 한/글 프로그램이 현재 "쪽윤곽 보기" 상태인지 확인/설정하는 방법 한/글 문서를 다루시는 분들 중에는 아마 솔루션 관련해서 일하시는 분들인가 싶은데 문서 데이터가 아니라, "쪽윤곽 보기 상태"나, "오탈자의 붉은 줄 없애기" 같은 내용으로 종종 질문 주실 때가 있어요. 이런 내용들이 API문서에 장황하게 설명되어 있지는 않지만, 꼼꼼히 읽어보면 대부분 해결책이 나오기는 하거든요. 위 질문, "쪽윤곽 보기 상태 확인" 같은 경우도 API문서와 스크립트 녹화로 간단히 체크 가능해요. 한 번 확인해볼까요? 한/글을 열고 Ctrl-G-L을 여러 번 눌러보면, 아래는 쪽윤곽 보기 상태, 아래는 쪽윤곽 숨김 상태예요. 액션테이블 문서를 읽어보면 쪽윤곽을 토글하는 명령어는 ViewOptionPaper라고 하네요. hwp.HAction.Run("ViewOptionPaper") 그런데.. 2022. 2. 2.