묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨직장인에게 꼭 필요한 파이썬-아래아한글 자동화 레시피
블록 내에서 표 갯수 확인하기, 표 찾기
질문 남겨주셔서 감사합니다.막히면 언제든 무엇이든 자주 질문 던져주세요.수학/과학이나 알고리즘과는 달리업무자동화 코딩은 고민해서 풀리는 경우가 정말 드뭅니다.다시 말씀드리지만, 질문을 자주자주 남겨주세요.저도 최대한 빠르게 회신 드리겠습니다.당부드릴 두 가지가 있습니다.① 가급적 구체적으로 설명해주세요.② 특정 챕터 관련 질문 남겨주실 때는, 어느 챕터인지 알려주세요ㅜ==================================== 안녕하세요 일코님메일드렸는데 많이 바쁘신듯 하네요~ ㅠ.ㅠ 열심히 구현하고 있는데, (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 공식문서?
질문 남겨주셔서 감사합니다.막히면 언제든 무엇이든 자주 질문 던져주세요.수학/과학이나 알고리즘과는 달리업무자동화 코딩은 고민해서 풀리는 경우가 정말 드뭅니다.다시 말씀드리지만, 질문을 자주자주 남겨주세요.저도 최대한 빠르게 회신 드리겠습니다.당부드릴 두 가지가 있습니다.① 가급적 구체적으로 설명해주세요.② 특정 챕터 관련 질문 남겨주실 때는, 어느 챕터인지 알려주세요ㅜ==================================== 안녕하세요 일코님혹시 pyhwpx 의 클래스, 메서드 등이 정리된 별도의 문서는 없을까요?만약 없다면 그런것들을 살펴보려면 어떻게 해야하는지 알고싶은데 다른 방법은 없을까요?감사합니다.
-
해결됨직장인에게 꼭 필요한 파이썬-아래아한글 자동화 레시피
첨부파일(필드명없음.hwp)과 강의 본문 내용 상 불일치 확인 요청
"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단계 이런거 가능할까요!? 질문이 많아 죄송합니다. 항상감사합니다.
-
해결됨직장인에게 꼭 필요한 파이썬-아래아한글 자동화 레시피
개요 다루기 질문(2)
아래 질문한 사람입니다. ^^답변 감사드립니다.추가적으로 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)
-
해결됨직장인에게 꼭 필요한 파이썬-아래아한글 자동화 레시피
개요 스타일 없음지정
어떤문장을 찾아가서 개요 수준 1로 지정이가능할까요??개요스타일을. 없음으로 변경하는 방법이 있을까요? 감사합니다.
-
해결됨직장인에게 꼭 필요한 파이썬-아래아한글 자동화 레시피
한글 글자지우는 명령이 궁금합니다
안녕하세요 일코님! 덕분에 요즘 사무실에서 시간이 잘 갑니다.이번에 궁금한 점은 SetPos로 커서를 이동한 다음 글자 입력 말고 글자를 지우는 명령도 가능한가요?백스페이스 입력을 찾고싶은데 어딜 찾아도 확인할 수 없네요.. \b도 작동하지 않아서 문의드립니다
-
해결됨직장인에게 꼭 필요한 파이썬-아래아한글 자동화 레시피
페이지를 넘어가는 문제 깔끔하게 정리하기
안녕하세요 일코님날씨 많이 추워졌는데 건강 잘 챙기시기 바랍니다 ^^현재 문제가 텍스트로만 이루어졌을 경우 아래와 같이 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의 위치가 잡히게 되네요..문제가 표로 마무리 될경우에 문제의 끝을 올바르게 특정해서 문제를 깔끔하게 정리할 방법이 없을까요? 감사합니다 !
-
해결됨문서 작성의 기초부터 심화까지! 한글 2022 완벽 가이드
수업내용과 관련된 자료가 없네요..
학습 관련 질문사항질문 제목은 내용을 요약해서 작성해주세요.질문 내용은 구체적이고 명확하게 작성해주세요.가능하다면 예시와 함께 설명해주세요.오류가 발생한 경우, 오류 메시지를 함께 첨부해주세요.질문에 대한 추가 정보를 제공할 수 있다면, 함께 남겨주세요.
-
해결됨직장인에게 꼭 필요한 파이썬-아래아한글 자동화 레시피
pyinstaller 빌드 시 바이러스 탐지 문제
안녕하세요 일코님,, 업무들을 순차적으로 자동화 하는데 많은 도움을 받았습니다.이제 또 새로운 문제에 직면을 했는데요, pyinstaller로 배포파일 빌드 시 자꾸 알약에 탐지가 됩니다.직원들에게 배포하고 사용하면서 알약에 바이러스 파일로 탐지가 된 것인지 모르겠지만 어느 순간부터 탐지되어 삭제가 되네요.이것저것 조치하다가 pyinstaller -F -w 에서 -w를 제외하고 배포하니 또 탐지가 안 되었다가, 하루 지나니 제외한 파일도 탐지가 됩니다.혹시 이 경우도 있었는지요? 프로그램의 과정이 아니라 배포의 과정에서 이러니 너무 답답합니다..
-
해결됨직장인에게 꼭 필요한 파이썬-아래아한글 자동화 레시피
초심자의 향후 학습방향에 대해 조언을 듣고 싶습니다~!
2-5. 문서의 필드목록 및 필드 값 취득하기강의 중 아래의 내용과 관련입니다. 이후 과정들은 배우고 익히는 데 시간이 많이 걸리지만,그리 효용성이 높지 않은,비교적 특이한 케이스에 사용되는 코드들이기 때문입니다.그래서, 여기까지 읽기를 마치고여러분의 업무를 하나씩 자동화해보시다가한/글 누름틀과 셀필드로는 해결되지 않는 문제를 만나셨을 때 다시 찾아오셔서 이후 과정을 이어 읽어주시기를 권장드립니다. 라고 말씀하셨는데요.즉, 정주행 독파 보다는 발췌독을 통한 학습을 권장하시는데..제가 궁금한 점은 이렇게 발췌독이 가능한가가 궁금합니다.무슨 말이냐면,2-5 강의까지 오는데만도 저로서는 상당히 어려웠습니다.이해 안되는 것들을 여러 번 다시 보면서 고민해 보니 지금은 그래도 1-1 ~ 2-5 강의 까지의 내용은 어느정도 이해할 수 있게는 된 거 같습니다.막혔던 부분이 그 이후의 강의 내용을 통해 해소되는 것도 여러 번 있었던 거 같습니다. (순차적으로 들어도 이해될 수 있는 순서로 강의 내용이 배치된다면 더욱 좋을 거 같다는 의견을 조심스레 드려 봅니다.)아무튼 어떤 것을 이해해야 그 보다 더 복잡한 것을 이해할 수 있고 이런 식의 느낌을 받는데요.더 어려운 기법까지 배워보고는 싶은데..제 수준에서는 발췌독으로 필요한 부분만 찾아서 듣는 것 만으로 이해가 가능할지 모르겠어서요.여기서 강의해 주신 더 어려운 기법을 배우고자 하는 코딩 초심자에게도 정주행 보다도 발췌독을 권장하실까요?두서 없는 질문이지만, 배움의 욕심은 많고 실력은 부족한 초심자에게 일코님은 어떤 조언을 주실지 들어보고 싶습니다.거북이 같이 왔지만 2-5까지 오고 또 그 과정의 코드들이 실행되는 경험을 한 게 정말 즐거웠고 감사드립니다.오래 걸리겠지만 실력을 더 높이고 싶습니다!
-
해결됨직장인에게 꼭 필요한 파이썬-아래아한글 자동화 레시피
SaveAs메소드에 대한 질문입니다
안녕하세요 일코님한글 블록저장에 대해 살펴보다가 궁금한 점이 생겨서 여쭤봅니다.커서를 이동해서 블록선택한 다음 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설명서도 읽을 수 있는 수준이 되고싶은데 너무 어렵네요..
-
해결됨직장인에게 꼭 필요한 파이썬-아래아한글 자동화 레시피
win32com 모듈을 못 찾음
맨 첫 강의에서 win32com 모듈을 찾지 못한다고 나옵니다. 질문에서 찾아보니 한글 오토메이션이 등록이 안 되어 있어서 그렇다고 하는 글을 봐서 해결책을 따라해 봤지만 그것 마저 안 됩니다^^;; 어떻게 해야 할까요?
-
해결됨직장인에게 꼭 필요한 파이썬-아래아한글 자동화 레시피
2-6. 필드속성 수정하기 에서 "자료다운" 버튼 클릭 시 오류가 뜹니다.
2-6. 필드속성 수정하기 에서 "자료다운" 버튼 클릭 시 오류가 뜹니다. "자료다운" 버튼 클릭 시 나타나는 오류화면은 아래와 같습니다.확인 및 "자료다운" 가능하도록 정정 부탁드립니다. 감사합니다.
-
해결됨직장인에게 꼭 필요한 파이썬-아래아한글 자동화 레시피
13-2. 녹화된 스크립트매크로를 파이썬에서 활용하는 방법 --- 강의 내용이 안보입니다.
한글 자동화 관련해서 공부할 강의 분량이 너무 많아서 완강은 아직 엄두도 안나고, 그냥 쭉 한 번씩 구경(?)하던 중이었는데요. 13-2. 녹화된 스크립트매크로를 파이썬에서 활용하는 방법이 강의에서는 내용이 전혀 뜨지 않네요. (아래 캡처) 제 컴퓨터 환경에 문제가 있는 것일까요?
-
미해결직장인에게 꼭 필요한 파이썬-아래아한글 자동화 레시피
한글 2014버전의 경우 이 기능은 사용이 어렵나요?
안녕하세요 일코님현재 문서 홀수/짝수 페이지 삭제 기능을 구현하려고 하는데요한글 2014에서는 이 기능 사용은 어려운가요?pset = hwp.CreateSet() 에서 계속 알 수 없는 오류가 나옵니다
-
해결됨직장인에게 꼭 필요한 파이썬-아래아한글 자동화 레시피
f"{field}{{{{{index}}}}}": 에 대해 제가 이해한 게 맞을까요?
2-4. [응용] 엑셀문서 값을 필드에 입력하기 관련입니다. # 1. 함수 정의 def 필드삽입(index, value): # 2. 필드 목록 만들기 field_list = ["이름", "성별", "생일", "취미"] # 3. 반복문으로 필드에 데이터 넣기 for idx, field in enumerate(field_list): # 4. 한글 문서에 데이터 입력하기 hwp.PutFieldText(f"{field}{{{{{index}}}}}", value[idx]) 위의 코드에서 바로 이 부분..hwp.PutFieldText(f"{field}{{{{{index}}}}}", value[idx])그중에서도 아래의 구문이 이해하기 어려웠습니다.f"{field}{{{{{index}}}}}" 이에 대하여 제가 최대한 이해하려고 풀어 써 본 것은 아래와 같습니다. ※ 아래는 엑셀(취미.xlsx)의 캡처 f"{field}{{{{{index}}}}}":위 줄은 한글 문서 안에 있는 특정 필드를 가리키는 주소를 의미함.예를 들어, 엑셀(취미.xlsx)의 첫 행인 2행의 이름 값을 넣고 싶다면, 한글 문서에서는 그 자리가 "이름{{0}}"에 해당할 것임.또한, 엑셀의 3행의 이름 값을 넣을 자리라면 "이름{{1}}"이 될 것임. 그래서 f"{field}{{{{{index}}}}}"는,여기서 field가 "이름", "성별", "생일", "취미" 중 하나이고, index는 몇 번째 데이터인지를 나타내는 숫자임.예를 들어, 첫 행인 2행의 이름이면 "이름{{0}}", 두 번째 행인 3행의 생일이면 "생일{{1}}" 이런 식으로 만들어야 함. 그런데 여기서 왜 중괄호가 5쌍이나 있는 것인지 궁금했음. --- {{{{{index}}}}} 에 중괄호가 무려 5쌍 있음! f"{field}{{{{{index}}}}}"에서,{{ }} <----- 실제로 보여질 중괄호 { } 를 출력하기 위함 ..... ①{{ }} <----- 실제로 보여질 중괄호 { } 를 출력하기 위함 ..... ②{index} <----- 'index'라는 변수의 값 넣기 위한 부분임. 위의 ①, ②의 부분의 중첩 즉 총 4쌍의 중괄호에 의해 {{ }} 형태의 문자열이 만들어짐.결과적으로 field = 이름이고 index = 0 이라면, f"{field}{{{{{index}}}}}" 코드는 "이름{{0}}" 이라는 문자열을 만들어 냄."이름{{0}}" 이라는 형태의 문자열을 만들어 내야, 이것을 이용해서 한글 문서에 hwp.PutFieldText("이름{{0}}", value[idx]) 라는 식으로 작동되어 원하는 값을 입력할 수 있는 상태가 되기 때문임. 제가 이해한 내용이 맞을까요?중괄호도 많고 복잡해서 이해하기 어려웠는데, 저와 같은 형태로 되어야 하는 이유를 추정해 보았습니다. 답변 부탁드립니다. 감사합니다.근데 문외한의 입장에서는 이런 거 한 줄 이해하기가 원래 이렇게 어렵게 느껴지는 게 정상인가요? ㅜㅠ
-
해결됨직장인에게 꼭 필요한 파이썬-아래아한글 자동화 레시피
엑셀의 2행에서 7행의 데이터를 다루는데 for row in range(2, 8): 으로 해야하는 이유는?
2-4. [응용] 엑셀문서 값을 필드에 입력하기 관련입니다. 강의 내용 중 for문 안에 ws.Range를 넣어, 엑셀문서의 모든 행을 출력해보는 내용이 있습니다.여기서 다루는 엑셀의 데이터는 아래와 같습니다. 여기서 다루는 범위는 2행(마크, 남 ...)부터 7행(슬아, 여, ...)이므로,for row in range(2,7):이라고 해야 맞는 게 아닌가 싶은데,for row in range(2,7):로 해보면 아래와 같이 원하는 결과가 아닙니다.실제 7행인 ['리사', '여', '1969년 11월 7일', '게임'] 가 빠진 결과가 나옵니다.for row in range(2,7): data = list( ws.Range(ws.Cells(row,1), ws.Cells(row,4)).Value[0] ) data[2] = data[2].strftime("%Y년 %#m월 %#d일") print(data) ['마크', '남', '1984년 5월 14일', 'VR'] ['빌', '남', '1955년 10월 28일', '기부'] ['일론', '남', '1971년 6월 28일', '트위터'] ['제프', '남', '1964년 1월 12일', '독서'] ['리사', '여', '1969년 11월 7일', '게임'] 반면에,for row in range(2,8):이라고 해야만 아래와 같이 엑셀의 2행부터 7행의 데이터가 원하는대로 출력이 됩니다.for row in range(2,8): data = list( ws.Range(ws.Cells(row,1), ws.Cells(row,4)).Value[0] ) data[2] = data[2].strftime("%Y년 %#m월 %#d일") print(data) ['마크', '남', '1984년 5월 14일', 'VR'] ['빌', '남', '1955년 10월 28일', '기부'] ['일론', '남', '1971년 6월 28일', '트위터'] ['제프', '남', '1964년 1월 12일', '독서'] ['리사', '여', '1969년 11월 7일', '게임'] ['슬아', '여', '1983년 6월 16일', '쇼핑'] 2행부터 7행의 데이터를 출력하는데 왜for row in range(2,8): 로 하는 것이 맞는 것인지 궁금합니다.
-
해결됨직장인에게 꼭 필요한 파이썬-아래아한글 자동화 레시피
한글 표의 필드명 표시방법이 있을까요?
한글문서 표 안에 셀 별로 필드명을 지정했습니다.일반 문서의 필드명은 누름틀 이름이 나오는데셀의 필드명은 표시가 되지 않더라구요..셀의 필드명 확인하기가 번거로운데 혹시 방법이나 팁이 있나 싶어 여쭤봅니다