본문 바로가기
반응형

방명록

  • 프로필사진 김민수 2021.07.16 14:23

    우와 이런것이 있었네요... 저도 공공기관 근무중인 사람인데 많은 도움이 될꺼 같습니다.
    아직 정주행은 안했으나 몇몇글을 보고 설레이는 맘이 드네요
    감사합니다. 정주행 하겠습니다.
    글고 유튜브도 구독했습니다.
    원래 이런글 잘 안남기나 개인노하우를 공유한다는 일이
    참 어려운일 이라고 생각되어 감사한 마음으로 글 남김니다.
    답변

    • 프로필사진 Martinii의 마티니.fun 2021.07.19 23:45 신고

      안녕하세요?
      노하우 공유라고는 하지만, 정돈되지 않은 강의용 습작에 지나지 않습니다ㅜ 맘 굳게 먹고 정리를 좀 해 보고 싶은데 와, 이게 쉽지 않네요ㅜ

      그래도 배운게 자동화인지라, 작업하시면서 자동화해보고 싶으신 게 있으면 방명록이나 이메일 [email protected]지메일 남겨주셔요.

      행복한 하루 되시고요ㅎ

  • 프로필사진 기만기만 2021.07.13 20:13

    안녕하세요 파이썬으로 다빈치리졸브 제어하는 https://www.martinii.fun/75 글을 읽었습니다.
    글 서두에 보면 유료 웹북 혹은 e북으로 판매 예정 하신다고 하셨는데 혹시 판매 되고 있나요?
    단축키로 특정작업을 매크로화 하고 싶은데 이 이후의 포스팅이 없어서 문의 드립니다.
    답변

    • 프로필사진 Martinii 2021.07.13 20:40

      안녕하세요?
      아쉽게도 다빈치리졸브 자동화 관련해서 제작하기로 계획했던 전자책이나 동영상강의는 여러 가지 이유로 무기한 연기하고 있습니다. 올해 중에는 착수할 예정이긴 합니다. (배포 말고 제작을요..)

      그래도 당장 어떤 부분이 궁금한지 알려주시면 제가 알고 있는 선에서 가능한한 도움을 드리고 싶습니다.

      문의는 [email protected]으로 보내주시거나, 민감한 내용이 아니라면 그냥 방명록이나 댓글로 남겨주셔도 됩니다. 확인 후 회신 드리겠습니다.

      행복한 하루 되세요^^

  • 프로필사진 베두인 2021.07.03 19:36

    https://www.martinii.fun/116 글 보고 연락을 드립니다
    저는 한글 2018 사용중인데 회사원코딩님이 일려 주신 솔류션 중
    아래 부분은 c# 에서 적용이 안되어 연락을 드립니다

    위쪽여백 = Set.Item("PageDef").Item("TopMargin")
    머리말여백 = Set.Item("PageDef").Item("HeaderLen")

    아마 질문을 주신 분이랑 제가 같은 고민을 하고 있는 것같습니다.

    제가 원하는 부분은 한글파일의 용지종류 (A4/B4.. ) 종류를 알고 싶습니다

    혹시, 회사원 코딩님 좋은 방법이 있을런지요 ?



    답변

    • 프로필사진 Martinii 2021.07.05 00:09

      안녕하세요?
      저도 제가 쓴 글을 방금 막 보고 와서 테스트해보았는데, 파이썬에서는 잘 작동합니다. 아마 C#에서 아이템셋을 설정할 때 파이썬과 조금 다를 수 있지 않을까 생각됩니다. 참고하시라고 포스팅을 하나 올려 둡니다.

      https://www.martinii.fun/170

      행복한 하루 되세요^^

  • 프로필사진 레디오스 2021.06.08 17:11 신고

    한글 관련 개발자를 찾다가 너무나 반가운 마음에 글을 남겨봅니다.
    학원에서 보유하고 있는 한글 문서의 기출 문제를 파일 형태로 불러와서 각각의 문항별로 잘라서 DB에 저장 할수 있는 프로그램 개발이
    필요합니다. 혹시 이런 기술 개발이 가능한 개발자와 연결이 가능할지. 문의드립니다.
    혹시라도 연결 가능하시다면 [email protected] 으로 연락주시면 감사하겠습니다.
    답변

  • 프로필사진 한글사랑 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는-왜-이렇게-복잡할까 [회사원코딩]



    답변

    • 프로필사진 Martinii의 마티니.fun 2021.01.27 19:14 신고

      지나가다님 안녕하세요?ㅎ
      방법이 간단하기는 한데,
      개인적으로는 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

반응형