본문 바로가기

방명록

  • 한글사랑 2021.04.04 21:47 신고

    한글내장 스크립트를 통해 문서내 하이퍼 링크 모두 걸기 및 외부 파일(엑셀 파일 ) 다루기...
    일전에 내장스크립트를 통해 외부파일 엑셀 파일 읽기 문의 드렸는데 아래 코드로
    가능함을 공유합니다

    이번에 제가 궁금한점은

    내장 스크립트를 통해 "회사원코딩" 에 모두 하이퍼 링크를 걸고
    싶은데 잘안되네요...


    // 회사원코딩 모두찾아 COUNTING 하는 코드
    function OnDocument_New()
    {
    var act=CreateAction("RepeatFind")
    var set=act.CreateSet();

    ret = 1;
    count = 0;

    while (ret ==1) {

    ret = act.GetDefault(set);
    ret = set.SetItem("FindString", "회사원코딩");
    ret = set.SetItem("IgnoreMessage", 1 );
    ret=act.Execute(set);
    if (ret ==1) count += 1;

    }

    alert(count);
    }

    function alert(s){
    XHwpMessageBox.String= "링크 갯수는 " + s;
    XHwpMessageBox.DoModal();
    }



    // 외부 파일 읽기
    function OnDocument_New()
    {
    var objExcel = new ActiveXObject("Excel.Application");
    var objWorkbook = objExcel.Workbooks.Open("C:\\회사원코딩.xlsx");
    intRow = 2;
    var test = new Array(300);
    while( intRow < 300) {
    test[intRow] = objExcel.Cells(intRow,1).Value;
    intRow = intRow + 1;
    }
    objExcel.quit();
    objExcel = null;

    }

  • 한글자동화 2021.02.06 20:42

    안녕하세요~ 업무자동화를 공부중인 직장인입니다.
    회사에서 한글문서를 자주 사용하여 한글 자동화를 공부하던 중 우연히 회사원 코딩님 블로그를 발견해서 바닥부터 하나하나 배워가고 있습니다.
    블로그를 통해 함께 공부하며 벌써 여러가지 자동화 코드를 만들 수 있었습니다. 정말 감사합니다!! 앞으로도 잘 부탁드립니다!!

    감사의 인사를 전하며 현재 공부 중 막힌 부분이 생겨 질문 하나만 부탁드리겠습니다 ㅠㅠ...
    다름이 아니라 특정 한글파일을 인쇄하는 자동화 코드를 작성하고 있습니다.
    다음은 한글 스크립트 매크로를 그대로 이용해서 작성한 코드인데 항상 Execute하는 과정에서 오류가 뜹니다...

    hwp.HAction.GetDefault("Print", hwp.HParameterSet.HPrint.HSet)
    hwp.HParameterSet.HPrint.Collate = 1
    hwp.HParameterSet.HPrint.UsingPagenum = 1
    hwp.HParameterSet.HPrint.PrintImage = 1
    hwp.HParameterSet.HPrint.PrintDrawObj = 1
    hwp.HParameterSet.HPrint.PrintAutoFootnoteLtext = "^f"
    hwp.HParameterSet.HPrint.PrintAutoFootnoteCtext = "^t"
    hwp.HParameterSet.HPrint.PrintAutoFootnoteRtext = "^P쪽 중 ^p쪽"
    hwp.HParameterSet.HPrint.PrintAutoHeadnoteLtext = "^c"
    hwp.HParameterSet.HPrint.PrintAutoHeadnoteCtext = "^n"
    hwp.HParameterSet.HPrint.PrintAutoHeadnoteRtext = "^p"
    hwp.HParameterSet.HPrint.PrintFormObj = 1
    hwp.HParameterSet.HPrint.PrintRevision = 1
    hwp.HParameterSet.HPrint.PrintBarcode = 1
    hwp.HParameterSet.HPrint.NumCopy = 1
    hwp.HParameterSet.HPrint.Device = hwp.PrintDevice("Printer")
    hwp.HAction.Execute("Print", hwp.HParameterSet.HPrint.HSet)

    다음과 같은 오류가 뜹니다.
    Traceback (most recent call last):
    File "c:\Users\user\Documents\code\print.py", line 47, in <module>
    hwp.HAction.Execute("Print", hwp.HParameterSet.HPrint.HSet)
    File "C:\Users\user\AppData\Local\Programs\Python\Python39\lib\site-packages\win32com\gen_py\7D2B6F3C-1D95-4E0C-BF5A-5EE564186FBCx0x1x0\HAction.py", line 35, in Execute
    return self._oleobj_.InvokeTypes(15001, LCID, 1, (11, 0), ((8, 1), (9, 1)),actname
    pywintypes.com_error: (-2147417851, '서버에서 예외 오류가 발생했습니다.', None, None)

    혹시몰라 API 매뉴얼의 방법으로 작성한 다음과 같은 코드를 사용해도 똑같은 오류가 발생합니다.

    # API매뉴얼 코드로 생성한 코드
    act = hwp.CreateAction("Print") # 메서드 초기화
    set = act.CreateSet() # 파라미터셋 생성
    set.SetItem("Device", 0) # 인자값 입력
    set.SetItem("Range",0)
    set.SetItem("NumCopy",1)
    set.SetItem("PrintMethod",0)
    set.SetItem("Device",0)
    act.Execute(set) # 메서드 실행

    며칠동안 최대한 고민해보고 이런저런 방법을 시도해봤는데 항상 같은 오류가 발생합니다. ㅠㅠ
    심지어 API 매뉴얼에 다음과같이 예시를 들어 설명되어있는 부분이 있어서 파이썬 형식으로 고쳐 시도해봤는데도 같은 오류가 발생합니다.

    HAction : 한/글에서 특정 기능을 수행하기 위한 액션 오브젝트
    예) 아래와 같은 형태로 사용하는 것이 HAction을 사용하는 올바른 사용법이다.
    HAction.GetDefault("Print", HParameterSet.HPrint.HSet); // 액션 초기화
    HParameterSet.HPrint.NumCopy = 3; //인쇄 매수를 3장으로 지정
    HAction.Execute("Print", HParameterSet.HPrint.HSet); // 액션 수행

    본 블로그에 비슷한 오류가 발생한 질문에 대답해주신 글이 있는걸 확인했는데 그때는 필요한 파라미터값을 누락해서 오류가 발생했던것을 확인하고
    변수를 적당히 줄이고 추가하는식으로 시도해봤는데 잘 안되네요 ㅠㅠ..

  • 물잠자리 2021.01.28 18:30

    안녕하세요 선생님! 요새 학원에서 알바하는 평범한 대학생입니다 ㅎㅎ 편집 작업을 한글로 하면 편할거 같아서 한글 컨트롤을 배우기 시작했는데 정말 도움이 많이 된 것 같습니다.

    그치만 제가 다른 것들은 거의 대부분 블로그와 유튜브 영상을 보면서 해결할 수 있었지만 한 가지는 도무지 해결이 안 되더라고요 ㅜㅠㅜㅠ 그래서 너무 궁금한 나머지 방명록에다라도 질문 남겨드립니다ㅎㅎㅎ

    제 코드에서 마지막으로 해야될 작업이 표 크기를 조정하는 작업인데, 처음에는
    hwp.HAction.Run("TableResizeLeft")
    이걸 반복 실행하면서 대충 넘어가려 했지만.. 표 내용에 따라서 크기가 조정되는 정도가 다르더라고요.

    그래서 Action Table이랑 ParameterSet Table 찾아보고서 이런 식으로 코드를 짜려했지만 잘 안 됩니다..ㅠㅜㅠ
    hwp.HAction.Run("TableCellBlock")
    hwp.HAction.GetDefault("TablePropertyDialog", hwp.HParameterSet.HShapeObject.HSet)
    hwp.HParameterSet.HShapeObject.WidthRelTo = 4 #크기 고정값으로 조절
    hwp.HParameterSet.HShapeObject.Width = 50

    hwp.HAction.Execute("TablePropertyDialog", hwp.HParameterSet.HShapeObject.HSet)

    혹시 한글에서는 표의 크기를 수치 대입을 통해 수정할 순 없는건가요??
    결국 마우스로 조절해야 된다면... 어떻게 하면 좋을까요??
    조언 부탁드립니다!! ㅜㅠㅜㅠ

    • martinii 2021.01.28 20:57

      물잠자리님 안녕하세요? 우선, 생성되어 있는 표의 특정 셀 크기를 수치대입을 통해 변경하는 건 가능하고 상당히 쉽기도 합니다.

      근데 옆 셀들의 너비가 자동으로 변경되는 게 아니라서 표 전체 너비가 들쑥날쑥해져버립니다. 그런 이유로, 표 전체 너비를 저장해뒀다가, 셀 하나의 너비를 변경한 후, 나머지 셀의 너비를 같이 맞춰서 전체너비를 유지해주는 추가작업을 해주셔야 표가 예뻐집니다ㅜ

      그리고 표 수정은 경우가 워낙 다양해서ㅜ 말씀해주신 내용만으로는 조언을 드리기가 어렵습니다. 실례지만, martinii.fun지메일로 해당파일이라든지,(내용을 빼고 보내주셔도 괜찮으니까요) 비슷하게만이라도 보여주시면 제가 적절한 방법을 알려드리기 편할 것 같습니다.

      제일 간단하게는, 원하시는 셀너비가 될 때까지 hwp.Run("TableResizeLineLeft")를 반복할 것 같은데, 혹시 그렇게 하면 문제가 생길까요?ㅎ

      하여튼 댓글 남겨주셔서 감사합니다.
      또 문의 남겨주시고, 편안한 밤 되세요!

    • 물잠자리 2021.01.28 22:02

      오! 답변 감사드립니다 ㅎㅎ 메일로 좀더 자세한 내용 보내드리겠습니다!!

  • 코리 2021.01.28 15:13

    안녕하세요. 좋은 게시글과 동영상 감사히 잘 보고 있습니다.
    3천개쯤 되는 (급 질문 죄송합니다^^;;) 한글 문서의 글자 수와 페이지 수를 정리해야 하는데요.
    여러가지를 시도해 봤는데 잘되지 않더라구요.

    일단 한글의 문서정보에서 조회되는 글자 수와 페이지 수는 복사가 되지 않습니다.
    심지어 "파일-문서정보" 메뉴는 매크로로 접근하면 클릭이 안되게 비활성화 되더라구요..

    혹시, 좋은 방법을 알고 계신지 문의 드립니다.
    미리 감사드립니다!!

    • martinii 2021.01.28 20:36

      안녕하세요? 아시다시피 저는 주로 파이썬으로 한/글 파일을 다룬다는 점을 먼저 밝혀둡니다ㅜ

      총 페이지 수는,

      hwp.PageCount 프로퍼티로 구하실 수 있습니다. 스크립트매크로 내에선 hwp를 빼고 PageCount를 사용하시면 바로 총페이지 숫자를 리턴합니다.

      문서 내의 글자 수는,

      hwp.GetTextFile(유니코드)과 파이썬의 len을 사용하시면 좋을 것 같습니다. 이스케이프 문자열이 글자수로 안 잡히므로 아래와 같이 구하시면 될 것 같습니다. 파이썬으로는,

      len(hwp.GetTextFile("UNICODE", None).replace("\r\n", ""))

      스크립트매크로상에서는 자바스크립트의 replace와 정규식을 사용하여

      GetTextFile("UNICODE", "").replace(/\r\n/gi, "").length;

      를 실행하면 글자수를 리턴합니다.

      더 구체적인 사용법이 필요하시면 댓글로 알려주세요. hwp파일 순회하며 파일명, 글자수 및 페이지수를 구해서 csv나 엑셀파일로 넣는다든지 하는 작업은 크게 어렵지 않은 것 같습니다.

    • 코리 2021.01.29 13:41

      자세히 알려주셔서 감사합니다! 열심히 코딩해볼께요! 감사합니다~!

  • 지나가다 2021.01.26 23:59

    정말 좋은 블로그(?), 강의를 보게 되어서 정말 기쁘고, 감사드립니다.
    한컴에 다니시는 것이 아닌지.. 아니면 어떻게 이런 것을 알고 계신지 ... 너무 대단하십니다.


    방명록임에도 불구하고,
    너무 궁금한 나머지, 질문도 하나 올립니다.

    FileName 과 filename 사이에서 고민하고 있는 "회사원코딩"의 수강생입니다. ^^;

    다음 내용을 좀 더 상세히 알 수 있을까요?
    어떻게 docstring을 통해 대소문자 점검을 할 수 있는지?
    미리 어떤 인자가 파라미터로 사용할 수 있는지? 알수 있는 방법에 대해 조언 부탁드립니다.

    "API문서를 한/글2010 이후로 10년간 업데이트하지 않았기 때문이기도 하고,
    또다른 이유로 win32의 MakePy문제로 일부 메서드의 파라미터는 한/글 내부 스크립트와 대소문자에 차이가 생긴다. FileName이 파이썬에서는 filename으로 바뀐다든지 하는 식이다. 다행히 이런 경우는 "어느 파라미터가 존재하지 않는다"는 오류메시지가 나오고, docstring을 통해 대소문자 점검을 해 주면 된다."
    출처: https://www.martinii.fun/entry/hwp의-API는-왜-이렇게-복잡할까 [회사원코딩]


    • 지나가다님 안녕하세요?ㅎ
      방법이 간단하기는 한데,
      개인적으로는 ipython콘솔의 ?와 ??를 자주 활용하는 편입니다. 그밖에는 7d2b6f3c(아래 포스팅에 설명해놓았습니다.) 파일을 파이참 프로젝트 안에 복사해두고 틈틈이 검색해서 활용하기도 합니다. 부디 궁금증을 해결하셨기를 바랍니다. 다른 질문 있으면 공격적으로 남겨주세요. 감사합니다!

      https://www.martinii.fun/136

  • bck 2021.01.11 14:02

    요즘 한글자동화에 빠져서 C#으로 작업하고 있습니다. 테이블 셀의 폭과 높이 읽어오는데 계속 삽질만 하다가 잘 정리해두신 내용이 있어 겨우 해결했네요. 감사합니다.^^!

    • martinii 2021.01.14 01:52

      bck님 안녕하세요?ㅎ 방명록 남겨주셔서 감사드립니다.

      도대체 어떤 포스팅을 보고 댓글 남겨주신걸까 찾아보니까.. 완전 부끄럽네요ㅜㅜㅜ 조금 더 성의있게 작성하고 싶은 마음이 절로 올라오네요ㅎ

      이런저런 커뮤니티 찾아보니까 한/글자동화는 대부분 C#으로들 하시더라고요.. 저도 유니티 연습하면서 C#을 열심히 익히고는 있는데, 한줄한줄 문서결과를 보면서 코딩하는 게 익숙해서 업무자동화는 계속 파이썬으로 하게 되더라고요..ㅜ 종종 소식 남겨주세요.

    • bck 2021.03.11 13:08

      안녕하세요. 전에 도움 받았던 BCK입니다. 최근까지 작업하다가 요즘엔 조금 소원해졌는데요. C#으로 작업하고 있던 한글 자동화 프로그램이 간간히 쓸 정도는 되어서 소식 알려드립니다.^^
      제 블로그에 올려두었는데요. 한번 사용해 보셔도 좋을 것 같습니다.
      https://blog.naver.com/husky81/222268520596

  • 한글사랑 2021.01.05 22:11

    한글 내장스크립트로 TEXTFILE이나 EXCEL DATA를 내장스크립트 배열(Array)로 직접 가져 올수 있을끼요...

    • martinii 2021.01.06 13:51

      내장스크립트로 외부문서에 접근하는 방법은 모르겠습니다. 다만 JScript에 외부문서 문자열을 불러오는(파이썬의 open처럼) 메서드가 있다면, txt나 csv 정도는 불러올 수 있지 않을까 생각됩니다. 저도 외부문서나 여러 파일을 제어하는 작업은 파이썬 등 외부 스크립트로만 처리하고 있습니다.

  • 한글사랑 2021.01.04 19:10

    martinii 님께서 7월31일 포스팅 글이 많은 도움이 되었습니다.

    덕분에 api 함수에 대해 두루 살펴볼 기회가 되었네요...
    오늘의 궁금증은 한글 내장스크립트 실행중 Pause/Continue/Stop 기능을
    넣고 싶은데 가능할까요..
    새해에는 건강과 더불어 다복하기를 기원드리며 여기서 배운 지식으로
    나눔을 실천하고 싶네요..^^

    • martinii 2021.01.06 14:10

      특정 키를 누르면 일시정지하는 기능은 상당한 해킹이 필요한 것 같습니다. (개인적으로는 어려울 것 같다고 생각됩니다..) 다만 디버깅처럼 특정 조건이나 상황에 일시정지를 하는 방법은, 내장스크립트 기본 기능 중에 메시지박스 등을 이용하시면, 해당 팝업을 닫기 전까지는 일시정지와 비슷한 효과 아닐까 생각이 됩니다.

    • 2021.01.06 14:33

      비밀댓글입니다

  • 한글사랑 2020.12.31 22:03

    1. 아래 한글 내장 스크립트는 정상동작합니다.
    javascript는 기본적으로 대소문자를 구분하는것으로 알고 있는데
    아래 코딩을 보시면 Array 는 되고 array 는 안되어서 헷갈리게 하네요
    화면에 문자를 출력하기 위해 변수 지정시에는 대소문자 구분없이 되니 말입니다.
    여튼 한컴에 문의하여 기반언어가 무었인지 내부적으로 사용하는 언어에 대한
    reference manual이 있는지 물어보니 MS Jscript를 참조하라고 답변하였습니다.


    function OnDocument_New()
    {
    var str = new Array(1000); // array(1000)은 왜 안되어서 헷갈리게 하네요...
    var x = xhwpMEssageBox; // var x = xhwpMessageBox;

    x.stRinG = "한글대소문자구분 헷갈리게 하네요"

    //x.string = "x.stRinG = "한글대소문자구분 헷갈리게 하네요"

    x.DOMODAL(); //x.Domodal()
    // 정상동작 하는데 변수 및 매소드 대소문자 혼용에 대한 경계가 불분명 하네요..

    }

    2. 이미 열려있는 한글 파일 제어권을 가져오는 문제에 대해서는 MFC코드를 VB로 변환
    (한컴에서는 포팅이라는 용어를 사용하였습니다.) 하여 사용하라고 하더군요...

    3. SNS 질의에서 vba로 열려있는 한결 연결이 getobject 매소드를 사용하면 가능하다고 하여
    여러방법으로 시도해 보았으나 실패 하였습니다.

    4. 한컴에 선택한 셀에 대해 매크로 실행하는 건에 대해 가능/불가능에 대한 답변이 없네요..

    성공하게 되면 방명록에 게시하도록 하겠습니다.

    2021년에는 코로나 없는 세상에서 다함께 행복하기를 바라며....

  • 한글사랑 2020.12.30 19:34

    A B C D E
    +--------+--------+--------+-------+--------+
    1| | B1 | | D1 | |
    +--------+--------+--------+-------+--------+
    2| A2 | | | | |
    +--------+--------+--------+-------+--------+
    3| | | C3 | | |
    +--------+--------+--------+-------+--------+
    첨부파일을 붙일 수 없어 대신 -+| 로 한글 표를 대신하였습니다.

    1. 가령 B1,D1, A2, C3 가 선택되어 있을 때 내장스크립트를 사용하여 선택된
    셀에만 하이퍼링크를 거는 코딩이 필요합니다. 표시문자열내용은(셀내용, 연결대상
    은 B1의 경우 그냥 www.B1.com )
    2. 한컴에서 내장 스크립트는 MS Jscript를 기반으로 한다고 답변하였는데
    var str = new array(1000); 에러가 발생합니다. 고정배열 선언 어떻게
    하는지 궁금합니다.
    3. 회사에서 전산실무자가 아니고 보안상 파이션 및 말씀하신 단축도메인 서비스를
    사용할 수도 없습니다.
    아래 Vbscript코드를 데스크탑 hotkey로 지정하고 hotkey 조작시 hotkey조작한
    윈도우로 복귀하여 커서가 위치한 단어의 블록
    을 클립보드로 가져와서 vbscript로 링크이동 조작을 하려하고 시험중인 코드인데
    여기에도 약간의 문제가 한글, 엑셀, 워드, 메모장, pdf등에서 범위선택 key가 다르며
    sendkeys의 특성이 신뢰성이 좀 떨어지고 pdf(아크로뱃)의 경우는 범위는 선택되나
    클립보드에 복사가 되지 않는 문제점이 있네요...
    vbscript로 제어권을 얻어서 값을 가져오는 문제는 오피스 제품군의 경우는 가능하나
    **** hotkey를 동작한 시점의 윈도우가 엑셀 또는 워드 인지 vbscript에서 확인할 수
    있는지 관련정보를 요청드립니다.
    **** pdf의 내용을 클립보드로 복사하는 것이 안되는 이유와 가능한 방법을 요청드립니다.

    **** 이문제는 하이퍼링크 와는 별도로 업무상 사용하는 모든 어플에서 hotkey를 누르면
    커서위치의 단어를 읽어서 관련업무 로 바로이동하는 것을 구현하려고 합니다.
    가령 회계전표, 문서번호, 주문번호 등등 ....
    **************** 해결하고자 하는 문제 *****************
    1. vbscript 는 코딩보호가 되지 않고 기능이 제한적이어서 개인적으로 조금 친숙한
    visualbasic으로 개발해 보려 하는데 감이 잡히지 않네요..
    desktop키 지정으로 시험할때는 쉬웠으나 vb로 hotkey를 만들고 hotkey조작힌
    원도우로 복귀하여 엑셀인지 워드 인지를 판단하고 엑셀의 경우는 현재셀 내용을
    기준으로 다른윈도우의 경우 커서가 위치한 블록의 단어를 분석하여 해당업무로
    이동구현.
    2. 한컴 개발자 자료실에 보면 이미 열려있는 한글의 제어권을 확보하여
    조작하는 샘플이 MFC 코드로 되어있느데 실력이 미천하여 vb로 포팅하여 응욜할 수가
    없네요.. 한컴에 요청하였으나 속시원한 정보는 ?$%@@

    서두 없이 너무 장황하게 적었네요. 자주들러 의견을 구하고 싶습니다.
    덕분에 코로나를 극복하는 활력소가 되네요.. 항상 건강하시기를 기원하며....
    관련 파일 및 설명자료를 어디에 남기면 좋을지 알려주시면 고맙겠습니다.
    lohts@naver.com

    set WSH = Wscript.CreateObject ("WScript.Shell")
    WSH.sendkeys "%{ESCAPE}" '마지막 윈도우 이동
    WSH.sendkeys "^{RIGHT}"
    WSH.sendkeys "^+{LEFT}"
    WSH.sendkeys "^c"
    DIM TEXT
    TEXT = CreateObject("htmlfile").ParentWindow.ClipboardData.GetData("text")
    msgbox TEXT '끝


    • martinii 2020.12.31 19:56

      1. 하이퍼링크를 거는 메서드는 간단합니다. 스크립트 매크로 녹화로 뽑아낼 수 있는 코드고요. 다만, 규칙없이 다수의 특정 셀을 선택(마우스로 하듯이) 하는 것은 내장메서드로는 불가능합니다. 표 안의 셀을 순회하면서 주소를 확인하는 함수를 따로 만드시면 될 것 같습니다. 제 7월31일 포스팅에 관련 글이 하나 있기는 합니다.

      2. 마소의 JScript가 아니고, 자바스크립트인 것 같은데, 저도 기반이 무엇으로 짜여 있는지는 잘 모릅니다. 다만, array 대신 Array를 사용하시면 배열은 생성됩니다. (그리고 JS에는 고정배열이 없습니다. Array 길이는 가변입니다.)

      3. 좌표 및 윈도우활성화를 통해 클립보드 복사를 하시는 과정이라면, 활성화 직후 윈도우API를 통해서 활성화된 창의 타이틀을 가져오거나 핸들, 클래스값 등을 통해서 어떤 응용프로그램창이 활성화되어 있는지 알 수 있다고 생각됩니다. 제가 VB에 대해 전혀 모르지만, 잠깐 구글링해보니까 VB로 win32 제어하는 튜토리얼들이 더러 있긴 하네요.

      4. pdf 특정 글 복사가 안 되는 건 한글사랑님 코드 문제가 아니고, 아크로뱃DC 리더의 보안문제라고 생각됩니다. 우리 회사에서도 아크로뱃리더로는 텍스트나 이미지 복사가 되지 않습니다. PDF를 브라우저로 여시거나, 한PDF 같은 기타 프로그램으로 여시면 해결될 것 같네요.

      5. 제작하시려는 프로그램의 수준이 상당히 높고, 상당히 난해해 보입니다. 제 얕은 경험상 정보시스템 관련 외주로 맡겨도 제작비용이 만만찮을 것 같은데, VB나 한/글 매크로 스크립트 가지고 개인이 개발할 수 있는 수준의 프로그램은 아닌 것 같습니다. 시간이 많으면 공부목적으로라도 의미가 있겠지만... 사실 무슨 말씀을 하시는지도 이해하기가 어렵습니다.. 제가 너무 내공이 부족한 탓인 것 같습니다. 저는 그냥 업무자동화에 관심을 갖게 된 보통 회사원이고요..

      6. 핫키와 클립보드 관련해서는 오토핫키나, 쓸만한 프로그램들이 시중에 있는 것으로 아는데, 응용프로그램에 원하시는 기능을 얹어서 쓰는 것보다는, 먼저 VB로 간단한 GUI를 하나 짜는 게 우선은 효율적이지 않나 하는 생각이 듭니다. 주제넘은 소리지만, 경험상 클립보드나 창 전환, 좌표클릭 이런 작업들은 제 PC 사양이 낮아서 그런지 모르겠지만 은근히 오류도 많이 나고, 누락되는 라인도 자주 생기고, 스크립트 실행중에 키보드를 누르거나 마우스를 움직이거나 하면 코드가 누락된다든지 하는... 하여튼 아래아한글 스크립트매크로나 엑셀 VBA를 GUI처럼 쓰시는 건, 공부목적이 아니라면 비추하고 싶습니다ㅜㅜㅜㅜㅜ

      7. MFC코드 관련해서는 저도 파이썬으로 포팅(?)을 시도해보았는데, 메서드 실행시 원인모를 오류가 계속 생겨서 포기하고 있는 상태입니다. 동일 코드로 엑셀이나 워드창을 제어해보니 또 그건 되더라고요... 며칠 해보다가 포기했습니다.

      개인적인 개발 부분에 조언을 드릴 수 있을 만큼 고수가 아니어서, 이 이상의 기술적인 질문들은 가급적 사양하고 싶습니다. 잘 모르고요. 양해부탁드립니다. 제 포스팅에 관한 질문이라면 환영합니다.

      부디 행복한 하루 보내시고, 새해 복 많이 받으세요!!

  • 한글사랑 2020.12.29 23:33

    처음 방문부터 궁금점을 남김니다. 한컴에 문의하고 만족할 만한 답변을 얻지 못하여서...
    1. 한글에서 표내의 여러셀블럭을 설정하고 선택된 셀블럭에 대해 매크로가 동작하게 하는게 가능할까요 ?
    2. 한글2018에서 하이퍼링크 주소길이가 제한됩니다. 웹주소가 길어서 400자가 넘는데 가능한 방법이 있을까요 ?
    3. 한글 하이퍼링크 수행시 외부문서를 설정하면 exe파일을 수행할 수 있는데 command line argument를 주는 방법이 있을까요
    가령 notepad.exe sample.txt
    4. 이미 열려있는 한글 엑셀에서 vba로 제어할 수 있을까요.
    5. 1~4번이 모두 다수의 한글관련 문서가 서브에 저장되어 있데
    다수의 한글을 서로 연결되도록 링크를 걸려고 합니다.
    하이퍼링크 주소가 길어서 해결이 안되어 하이퍼링크 주소 클릭하면 특정프로그램(이하 A1)이 수행되고
    A1프로그램은 자신을 실행시킨 한글의 하이퍼링크에 표시할 문자열에 저장되어 있는 문서번호를 가져와서
    A1프로그램에 심어준 하이퍼링크 주소와 조합하여 다른문서와 링크가 되도록 하려 합니다.
    다르게 본기능을 구현하는 방법이나 관련질문에 대한 도움이 절실히 필요합니다. 몇개월간 고민 하였는데 별다른 소득이
    없어서.... 미리 감사드립니다.

    • martinii 2020.12.30 01:08

      안녕하세요? 반갑습니다. 자주 궁금증 남겨주세요. 외롭습니다.

      1. 가능할 것 같은데요? 선택된 셀블럭에 대해서만 매크로가 동작하게 가능합니다. 다만 어떤 커맨드냐에 따라 다를 것 같은데, 예를 들어 글자모양이나 문단모양, 셀높이 조절 같은 건 가능하지만... (음, 다 가능할 것 같은데?) 어떤 매크로를 적용해보려고 하시는지 구체적으로 알려주시면 추가답변 드리겠습니다.

      2. 가능합니다. bit.ly나 tiny.kilho.net 같은 단축도메인 서비스를 사용하시면 간단히 해결하실 수 있습니다.

      3. 가능합니다. notepad.exe sample.txt라는 내용으로 .bat파일을 만들고 .bat파일을 실행하게 하세요.

      4. 아쉽게도 불가능합니다. 한/글 오브젝트 인터페이스는, 기존에 열린 한/글창을 제어할 수 없게 설계되어 있습니다. (새 한/글 창을 여는 건 가능합니다. 한/글이 아니라 엑셀이나 워드는 이미 열려 있어도 VBA를 통해 제어 가능합니다.)

      5. 가능할 것 같습니다. 다만, 말씀하신 방법이나 한/글 스크립트 매크로만 가지고는 어렵고, 파이썬 등 외부 스크립트로 (하이퍼링크 연결된) bat파일을 동적으로 수정해주거나, 하는 방법 등으로는 간단하게 해결할 수 있겠습니다. 이것도 제가 잘 이해가 안돼서;; 구체적으로 알려주시면 다시 답변 드리겠습니다.

      감사합니다.

  • 슬라임 2020.11.20 18:41

    보이지않는 곳에서 많은 시간과 노력을 들여서 만드신 성과들을 공유해주셔서 진심으로 감사합니다.



    • 안녕하세요?
      어차피 혼자만 갖고 있어봤자 별 쓸모 없는 기술입니다. 자동화 해보시다 막힐 때 연락 주세요ㅎ

      감사합니다.
      행복한 하루 되세요!!

  • 구독자 2020.09.23 21:25

    ㅠㅠ 올려주신 영상 감사히 열심히 보고 따라하던중 비공개로 바뀌어서 아쉽습니다..



    • 안녕하세요?
      대부분 공개로 전환하였습니다. 집에서 녹음작업이나 영상편집이 쉽지 않아서, 당분간은 블로그 포스팅으로 전념하려고 합니다. 종종 들러주시면 감사하겠습니다.

      행복한 하루 되세요^^

  • 눈을부릅뜨고 2020.09.20 11:40 신고

    안녕하세요. 새로운 구독자입니다. '회사원코딩' 정말 많은 도움이 되고있습니다.
    A라는 파일에서 특정 단어를 클릭하면 B라는 다른 파일에서 해당 특정 단어 뜻을 정의한 부분을 오픈하려고 합니다.
    B파일의 해당부분에 '책갈피'를 넣으려고 다음처럼 했는데, 책갈피가 생성되지 않습니다. ("문서비교구현" 참조)
    도와주셔요!

    # poslist는 확인되었음. : poslist.append(hwp.GetPos())
    for each in poslist:
    hwp.SetPos(*each)
    hwp.HAction.GetDefault("BookMark", hwp.HParameterSet.HBookMark.HSet)
    hwp.HParameterSet.HBookMark.Command = 0 #bookmark 생성
    hwp.HAction.Execute("BookMark", hwp.HParameterSet.HBookMark.HSet)



    • 안녕하세요?
      책갈피 생성시에는 Command 뿐만 아니라, Name과 Type도 생성하셔야 합니다.

      SetPos로 해당위치로 이동하신 후에 아래 코드를 실행해 보시기 바랍니다.
      Act = hwp.CreateAction("Bookmark" ) # 액션테이블에서 "글자 모양" 검색, 액션아이디에서 "CharShape" 찾음
      Set = Act.CreateSet() # 세트 생성
      Act.GetDefault(Set) # 세트 초기화(Set의 파라미터에 현재 문서의 값을 적용)
      Set.SetItem("Name", "책갈피" ) # 파라미터셋테이블에서 "CharShape" 검색, 아이템아이디에서 "Bold" 찾음
      Set.SetItem("Type", 0) # 0:일반책갈피, 1:블록책갈피
      Set.SetItem("Command", 0) # 0:생성, 1:이동, 2:수정
      Act.Execute(Set)

      행복한 하루 되세요!

  • Thanks 2020.08.28 14:37

    아래와 같이는 잘 실행됩니다.
    hwp.HAction.GetDefault("TableCreate", hwp.HParameterSet.HTableCreation.HSet)
    hwp.HParameterSet.HTableCreation.Rows = 1
    hwp.HParameterSet.HTableCreation.Cols = 1
    hwp.HAction.Execute("TableCreate", hwp.HParameterSet.HTableCreation.HSet);

    하지만 크기조절하기위에 추가 코드를 넣으면 문제가 생깁니다.

    혹시 해결 할 수 있는 방법을 알 수 있을까요?

    hwp.HAction.GetDefault("TableCreate", hwp.HParameterSet.HTableCreation.HSet)
    hwp.HParameterSet.HTableCreation.Rows = 1
    hwp.HParameterSet.HTableCreation.Cols = 1
    hwp.HParameterSet.HTableCreation.CreateItemArray("ColWidth", 1);
    hwp.HParameterSet.HTableCreation.ColWidth.Item[0] = hwp.MiliToHwpUnit(144.4);
    hwp.HParameterSet.HTableCreation.CreateItemArray("RowHeight", 1);
    hwp.HParameterSet.HTableCreation.RowHeight.Item(0) = hwp.MiliToHwpUnit(0.0);
    hwp.HAction.Execute("TableCreate", hwp.HParameterSet.HTableCreation.HSet);



    • 안녕하세요?
      표 오류는 대부분 TreatAsChar 속성이 빠져 있어서 그렇습니다. 최근 포스팅에 표 자동생성 관련해서 딥다이브 해놨으니 참고하시기 바랍니다^^

      행복한 하루 되세요!

  • Martinii 2020.08.19 12:58

    개인적인 헛소리를 남기고 싶은데, 어떻게 남겨야 할지 몰라 제 블로그 방명록에 이런 글을 끄적여봅니다. 어제 제 전공과 관련해서 기사 자격을 하나 더 취득하게 되었습니다. 광산보안기사 자격인데요.. 최근들어 광업 진흥을 위해서 광업 관련자격시험의 합격율도 상당히 끌어올려주고 있고(난이도가 낮다는 뜻이겠죠?), 그 덕분에 저도 덩달아 붙게 되었습니다. 1차 필기, 2차 (주관식 및 작업형) 시험이 있는데, 어느 정도 기본적인 소양 선에서 둘러대듯 대답할 수 있는 정도의...(?) 기본적이고 전반적인(얕고넓은) 전공이해도가 있으면 깊은 공부 없이 합격을 노려볼 수 있는 난이도의 시험이라고 생각됩니다. 물론 비전공자에게는 상당히 어려운 시험일 것 같아요. 비전공자시라면 광산보안기능사나, 산업기사를 먼저 노려보실 수도 있을 것 같습니다. 굳이 따지 않아도 될 자격이라고 생각하기도 했는데, 제가 현재 강의를 맡고 있는 과목이 광산보안과 연관되기도 하고, 그래도 전공 관련 기관에서 일하고 있는데 강의역량이나 커리어에도 도움이 될 것 같아 틈틈이 준비를 하게 되었습니다.

    다음으로 취득하고 싶은 자격증은 사실, 정처기나 정보기, 아니면 데이터분석전문가 ADP? 같은 IT 관련 자격증을 노려보고 싶습니다. 데이터분석준전문가ADsP는 몇 년 전에 취득을 했는데, R을 사용하는 부분에서 조금... 걸리더라고요. 저는 파이썬을 주력으로 다루는데 R을 새로 공부하는 과정이 부담스러워서 ADP 욕심은 내려놓고 있었습니다. NCS과정이 도입되면서 2020년 정보처리기사 후기도 상당히... 부정적이더라고요. 전공자들도 힘들어한다... 이런 후기들도 많고요. 정보보안기사도 원래 10% 미만의 합격률로 유명했는데, 그냥 교양 공부한다 생각하면서 틈틈이 교재를 읽어보려고 합니다.

  • Olivia 2020.08.08 17:13

    서무 업무에 큰 도움이 될 것 같아요! 자주 올려주세요♥

  • pandas-py 2020.04.19 21:03 신고

    회사원 코딩님, 안녕하세요. 블로그 개설 축하드려요. ^^ 종종 들러서 구경하면서 질문 드릴께요. 항상 응원 드립니다.



  • 안녕하세요?
    파이썬 프로그래밍과 아래아한글 및 오피스 자동화에 관심이 많은 사람입니다.
    회사원코딩이라는 유튜브채널을 운영하고 있습니다.
    자동화가 콘텐츠 뽑을 게 많지 않습니다.
    채널을 지속할 수 있게 종종 질문 남겨주시면 감사하겠습니다.
    행복한 하루 되세요!!!


반응형