저는 한글 2014를 사용하고 있습니다. 엑셀문서 값을 필드에 입력하기를 실행했을때 강의에 올라온 영상처럼 엑셀에 있는 자료가 페이지별로 하나하나 생성 되는것이 아닌 마크만 입력되고 나머지는 입력이 되지 않습니다. 제가 타이핑한것이 잘못 됐나 싶어서 강의에 있는 소스를 붙여 넣기 해서 실행을 해봐도 마크만 입력되고 나머지 자료들은 입력이 되지 않는데 왜 그럴까요?
질문 남겨주셔서 감사합니다. 막히면 언제든 무엇이든 자주 질문 던져주세요. 수학/과학이나 알고리즘과는 달리 업무자동화 코딩은 고민해서 풀리는 경우가 정말 드뭅니다. 다시 말씀드리지만, 질문을 자주자주 남겨주세요. 저도 최대한 빠르게 회신 드리겠습니다. 당부드릴 두 가지가 있습니다. ① 가급적 구체적으로 설명해주세요. ② 특정 챕터 관련 질문 남겨주실 때는, 어느 챕터인지 알려주세요ㅜ ==================================== 기본 파일이 하나 있습니다. 그리고, 예를 들면 앞부분이 동일한 파일을 여러개 같이 관리하고 있습니다. 이때 기본파일의 앞부분에 3조의 내용(법령 관련 지침이라 1,2,3,4,~조로 구성)이 변경되었을 때, 기본파일의 변경사항을 바꿀파일에 적용할 수 있을 지 문의 드립니다. 파일 첨부가 안되어서 이미지로 첨부해봅니다. [기본파일 내용] [바꿀파일1] [바꿀파일2]
질문 남겨주셔서 감사합니다. 막히면 언제든 무엇이든 자주 질문 던져주세요. 수학/과학이나 알고리즘과는 달리 업무자동화 코딩은 고민해서 풀리는 경우가 정말 드뭅니다. 다시 말씀드리지만, 질문을 자주자주 남겨주세요. 저도 최대한 빠르게 회신 드리겠습니다. 당부드릴 두 가지가 있습니다. ① 가급적 구체적으로 설명해주세요. ② 특정 챕터 관련 질문 남겨주실 때는, 어느 챕터인지 알려주세요ㅜ ==================================== 안녕하세요 일코님~ 블럭처리를 한 상태에서 실행하면 그 블럭의 텍스트를 반환해주는 함수를 쓰고있는데요. def extract_text_from_block(): hwp.InitScan(range=0xff) # 0xff <<선택된 범위 내에서 검색 _, text_blokced = hwp.GetText() # 텍스트만 추출 hwp.ReleaseScan() # 스캔을 해제. return text_blokced # 이경우, 해당 target이 text에 포함되어있으면 True, 아니면 False를 반환. 어떻게 하다보니깐 만들어서 쓰고있는데.. 문제는 이게 para 1개를 넘어가면 \r\n을 반환하고 아무것도 반환하지 않네요.. 단락 하나를 넘어가지 않게 블럭설정하면 잘 작동하는데요. 여러줄에는 먹히지가 않네요.. (1) 일단 블록설정한 text를 변수에 할당할 때 이런식으로 함수를 쓰는게 효율적인 방법인지? (2) 만약 괜찮은 방법이라면, 여러줄을 블록설정한뒤에 변수에 할당하려면 어떻게 해야하는지? 이렇게 두가지가 궁금합니다! 감사합니다!!
질문 남겨주셔서 감사합니다. 막히면 언제든 무엇이든 자주 질문 던져주세요. 수학/과학이나 알고리즘과는 달리 업무자동화 코딩은 고민해서 풀리는 경우가 정말 드뭅니다. 다시 말씀드리지만, 질문을 자주자주 남겨주세요. 저도 최대한 빠르게 회신 드리겠습니다. 당부드릴 두 가지가 있습니다. ① 가급적 구체적으로 설명해주세요. ② 특정 챕터 관련 질문 남겨주실 때는, 어느 챕터인지 알려주세요ㅜ ==================================== 안녕하세요 일코님 메일드렸는데 많이 바쁘신듯 하네요~ ㅠ.ㅠ 열심히 구현하고 있는데, (1) 블록 설정된 내에서 표가 몇개 있는지 확인 하는것 (2) 표의 갯수를 확인하고 차례로 그 표를 찾아서 진입하는 방법 을 잘 모르겠습니다. (3) 이전에 블록 내에서 텍스트를 검색하는 방법을 알려주셨었는데, 그것을 잘 활용하고 있는데요. def 블록내_텍스트_포함_여부(text): try: hwp.InitScan(Range=0xff) # 0xff <<선택된 범위 내에서 검색 except: hwp.InitScan(range=0xff) _, range_text = hwp.GetText() # 텍스트만 추출 hwp.ReleaseScan() # releaseScan이란 함수는 스캔을 해제. hwp.HAction.Run("MoveParaEnd") return f"{text}" in range_text # 이경우, 해당 target이 text에 포함되어있으면 True, 아니면 False를 반환. python 터미널에서 행별로 코드를 실행할 때, Range=0xff 를 했을때 올바른 파라미터가 아니라고 오류가 뜰때가 많더라구요 근데 또 이걸 py파일을 실행해서 했을떄는 되는거 같구요. 그래서 그냥 try except 구문을 쓰고있는데, 제가 뭔가를 잘못사용하고 있는 걸까요? 감사합니다.
질문 남겨주셔서 감사합니다. 막히면 언제든 무엇이든 자주 질문 던져주세요. 수학/과학이나 알고리즘과는 달리 업무자동화 코딩은 고민해서 풀리는 경우가 정말 드뭅니다. 다시 말씀드리지만, 질문을 자주자주 남겨주세요. 저도 최대한 빠르게 회신 드리겠습니다. 당부드릴 두 가지가 있습니다. ① 가급적 구체적으로 설명해주세요. ② 특정 챕터 관련 질문 남겨주실 때는, 어느 챕터인지 알려주세요ㅜ ==================================== 안녕하세요 일코님 혹시 pyhwpx 의 클래스, 메서드 등이 정리된 별도의 문서는 없을까요? 만약 없다면 그런것들을 살펴보려면 어떻게 해야하는지 알고싶은데 다른 방법은 없을까요? 감사합니다.
"2-6. 필드속성 수정하기" 중 현재 커서위치의 필드이름 수정하기 : SetCurFieldName 관련입니다. (아래 스크린샷 참고) 강의 본문을 보면, 첨부된 실습파일인 "필드명없음.hwp"이 누름틀은 네 개 들어가 있지만, 필드명이 정의되어 있지 않은 상태입니다. 라고 설명되어 있는데요. "필드명없음.hwp"를 다운로드 받아서 열어보면 강의 본문과 다릅니다. 즉, 필드 4개에 필드명이 모두 정의된 상태입니다. 또한, 강의 본문에는, "필드명없음.hwp" 상 내용이 이름 : 여기에 입력 성별 : 여기에 입력 생일 : 여기에 입력 취미 : 여기에 입력 이라고 기재되어 있지만, "필드명없음.hwp"를 열어보면 이름 : 이름 성별 : 성별 생일 : 성별 취미 : 성별 로 확인됩니다. 잘못 첨부하신 거라면, 첨부파일과 강의 본문 간 일치되도록 정정해 주시면 혼동을 방지하는데 큰 도움이 될 거 같습니다. 혹여나 "예시문서는 아래와 같습니다." 라고 기재하시면서 실습이 완료된 파일을 첨부해 주신 의도라면, 수강생의 입장에서는 해당 위치에 실습 진행 전 파일을 첨부해 주시는 게 더 이해에 더 매끄러울 거 같습니다. 아니면, 해당 첨부파일이 "실습이 완료된 이후의 상태"라는 언급을 해주시면 정확할 거 같습니다. 아울러, hwp.SetCurFieldName(Field="이름", Direction="이름입력", memo="이름메모") 코드를 실행할 때는, "필드명 정의되어 있지 않은 누름틀에서 캐릿이 깜빡이는 상태에서 위 코드를 실행"하면 된다는 설명을 한 줄 더 넣어주시면 어떤 설명을 하고 계신 건지 더 정확히 이해할 수 있을 거 같습니다. ※ 요 부분 실습해보고 말씀드리는 것입니다. 감사합니다.
파이썬 pyhwpx 이용해서 개인 매크로를 만들고 있는데 .. 막히는 부분이 있어 문의드립니다 원하는 기능은 문서 내 모든 표를 저장하고 하나씩 순회하면서 매크로를 적용시키려합니다.. 근데 표 글자처럼 취급을 해제시키면 hwp.get_into_nth_table(Table_index) 이 코드로는 그 인덱스번호 표의 첫번째 셀로 가지 않았습니다.. hwp.move_to_ctrl(Table_list[Table_index]) hwp.find_ctrl() hwp.ShapeObjTableSelCell() 아니면 이렇게 컨트롤을 넣어서 해도 안으로 안갔습니다.. hwp.select_ctrl(Table_list[Table_index]) 이 함수 사용하니까 선택은 되는데 셀 전체 선택이 또 안되더라구요.ㅠㅠ 그리구 표 하나씩 넘길때마다 조판부호 같은게 켯다꺼지네용;; 글자처럼 취급하지 않은 표를 조작할 방법 알려주시면 감사하겠습니다.
안녕하세요 빠른 답변 감사합니다. 아래 잠긴 문서 너무 궁굼합니다. ㅠㅠ [HDMI] 최종화 : 취합문서 스타일 교정 저번 질문에서 커서위치 스타일 추출이 없어서 고민 하고 있습니다. 그러면 내가 원하는 커서위치의 서식정보를 가지고 와서 스타일을 만들면 어떨까 고민하고 있는데요 저번에 어느 일코님 강이에서 스타일 만드는거는 어렵다고 이야기를 들어서 ^^& 서식정보 추출이 가능한가요!? 스타일 폰트 크기 자간등 및 개요수전 1단계 이런거 가능할까요!? 질문이 많아 죄송합니다. 항상감사합니다.
아래 질문한 사람입니다. ^^ 답변 감사드립니다. 추가적으로 ctrl k + o 개요 번호모양 없음 지정하는 방법과 스타일의 커서 위치로 스타일 바꾸기가 가능할까요!? 요렇게 해봤는데 제가 바꾸고자 하는 스타일을 지정하는 방법을 모르겠습니다. ㅠ hwp.open(hwpx_file, arg="suspendpassword:false; forceopen:true; versionwarning:false") print('---------------------') print(hwp.find(src=contents[1], direction='AllDoc'), hwp.current_page) print('---------------------') print(hwp.find(src=contents[1], direction='AllDoc'), hwp.current_page) print('---------------------') #hwp.HAction.Run("StyleShortcut3") hwp.hwp.HAction.GetDefault("StyleChangeToCurrentShape", hwp.hwp.HParameterSet.HStyleItem.HSet) hwp.hwp.HAction.Execute("StyleChangeToCurrentShape", hwp.hwp.HParameterSet.HStyleItem.HSet)
안녕하세요 일코님 날씨 많이 추워졌는데 건강 잘 챙기시기 바랍니다 ^^ 현재 문제가 텍스트로만 이루어졌을 경우 아래와 같이 BreakPage메소드를 통해 페이지에 걸친 문제가 없도록 정리하고 있씁니다. while 찾기("#"): # 샵 "#"표시는 문제의 시작지점입니다. hwp.Run("MoveLineBegin") start_page = hwp.KeyIndicator()[3] start_pos = hwp.GetPos() # hwp.Run("MoveParaEnd") 둘중_빠른것_찾기("#", "<<<") 현재문단블록처리() if 블록내_텍스트_포함_여부("<<<"): hwp.Run("MovePageBegin") hwp.Run("MoveLeft") else: hwp.Run("MoveParaBegin") 위로_찾기_아무거나() # 다음문제로 넘어간뒤, 아무런 텍스트나 위로 찾기 하여 문제의 끝을 특정함 hwp.Run("MoveParaEnd") end_page = hwp.KeyIndicator()[3] endpos = hwp.GetPos() if end_page != start_page: # 문제 시작점과 끝점의 페이지가 다를 경우 BreakPage hwp.SetPos(*start_pos) hwp.Run("BreakPage") hwp.Run("MoveParaEnd") 문제는, 문제의 형식이 표로 되어 있을 때가 있다는 것인데요. 이런식으로 표가 존재하고, 이 표가 넘어갈경우에,, 현재 코드를 적용하면 저 "수정"으로 이동하여 endpos의 위치가 잡히게 되네요.. 문제가 표로 마무리 될경우에 문제의 끝을 올바르게 특정해서 문제를 깔끔하게 정리할 방법이 없을까요? 감사합니다 !
안녕하세요 일코님,, 업무들을 순차적으로 자동화 하는데 많은 도움을 받았습니다. 이제 또 새로운 문제에 직면을 했는데요, pyinstaller로 배포파일 빌드 시 자꾸 알약에 탐지가 됩니다. 직원들에게 배포하고 사용하면서 알약에 바이러스 파일로 탐지가 된 것인지 모르겠지만 어느 순간부터 탐지되어 삭제가 되네요. 이것저것 조치하다가 pyinstaller -F -w 에서 -w를 제외하고 배포하니 또 탐지가 안 되었다가, 하루 지나니 제외한 파일도 탐지가 됩니다. 혹시 이 경우도 있었는지요? 프로그램의 과정이 아니라 배포의 과정에서 이러니 너무 답답합니다..
2-5. 문서의 필드목록 및 필드 값 취득하기 강의 중 아래의 내용과 관련입니다. 이후 과정들은 배우고 익히는 데 시간이 많이 걸리지만, 그리 효용성이 높지 않은, 비교적 특이한 케이스에 사용되는 코드들이기 때문입니다. 그래서, 여기까지 읽기를 마치고 여러분의 업무를 하나씩 자동화해보시다가 한/글 누름틀과 셀필드로는 해결되지 않는 문제를 만나셨을 때 다시 찾아오셔서 이후 과정을 이어 읽어주시기를 권장드립니다. 라고 말씀하셨는데요. 즉, 정주행 독파 보다는 발췌독을 통한 학습을 권장하시는데.. 제가 궁금한 점은 이렇게 발췌독이 가능한가가 궁금합니다. 무슨 말이냐면, 2-5 강의까지 오는데만도 저로서는 상당히 어려웠습니다. 이해 안되는 것들을 여러 번 다시 보면서 고민해 보니 지금은 그래도 1-1 ~ 2-5 강의 까지의 내용은 어느정도 이해할 수 있게는 된 거 같습니다. 막혔던 부분이 그 이후의 강의 내용을 통해 해소되는 것도 여러 번 있었던 거 같습니다. (순차적으로 들어도 이해될 수 있는 순서로 강의 내용이 배치된다면 더욱 좋을 거 같다는 의견을 조심스레 드려 봅니다.) 아무튼 어떤 것을 이해해야 그 보다 더 복잡한 것을 이해할 수 있고 이런 식의 느낌을 받는데요. 더 어려운 기법까지 배워보고는 싶은데.. 제 수준에서는 발췌독으로 필요한 부분만 찾아서 듣는 것 만으로 이해가 가능할지 모르겠어서요. 여기서 강의해 주신 더 어려운 기법을 배우고자 하는 코딩 초심자에게도 정주행 보다도 발췌독을 권장하실까요? 두서 없는 질문이지만, 배움의 욕심은 많고 실력은 부족한 초심자에게 일코님은 어떤 조언을 주실지 들어보고 싶습니다. 거북이 같이 왔지만 2-5까지 오고 또 그 과정의 코드들이 실행되는 경험을 한 게 정말 즐거웠고 감사드립니다. 오래 걸리겠지만 실력을 더 높이고 싶습니다!
안녕하세요 일코님 한글 블록저장에 대해 살펴보다가 궁금한 점이 생겨서 여쭤봅니다. 커서를 이동해서 블록선택한 다음 hwp.HAction.GetDefault("FileSaveAs_S", hwp.HParameterSet.HFileOpenSave.HSet) hwp.HParameterSet.HFileOpenSave.filename = filename hwp.HParameterSet.HFileOpenSave.Format = "HWP" hwp.HParameterSet.HFileOpenSave.Attributes = 1 hwp.HAction.Execute("FileSaveAs_S", hwp.HParameterSet.HFileOpenSave.HSet) 이 코드를 실행하면 블록 저장이 됨을 확인했습니다. 여기서 궁금한 점이 있는데요 hwp.SaveAs(hwp.Path.replace('.hwp', " - 계약서.hwp"), Format="HWP") 이 코드와의 차이점이 뭘까요? 실행하면 위에 코드는 블록저장이 되지만, 아래 코드는 전체 파일이 다른이름으로 저장되더라구요. FileSaveAs_S가 블록저장 메소드인가요? 혹시 가능하다면 한글API설명서 어디에 있는지도 알려주실 수 있을까요? 한글API설명서도 읽을 수 있는 수준이 되고싶은데 너무 어렵네요..