강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

이상민님의 프로필 이미지
이상민

작성한 질문수

직장인에게 꼭 필요한 파이썬-아래아한글 자동화 레시피

질문을 남겨주세요.

표 찾아가기 도와주세요...ㅠㅠ

해결된 질문

작성

·

285

1

파이썬 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])

이 함수 사용하니까 선택은 되는데 셀 전체 선택이 또 안되더라구요.ㅠㅠ 그리구 표 하나씩 넘길때마다 조판부호 같은게 켯다꺼지네용;;

 

글자처럼 취급하지 않은 표를 조작할 방법 알려주시면 감사하겠습니다.

 

 

퀴즈

71%나 틀려요. 한번 도전해보세요!

강사는 왜 수강생들에게 질문 게시판 활용을 강하게 권장할까요?

강의 내용이 부족해서 보충 설명이 필요해서

업무 자동화가 어렵고 실제 문제 해결에 멘토링이 필요해서

완강을 해야만 질문 권한이 주어지기 때문에

강의 판매를 위해 질문 수를 늘려야 해서

답변 3

1

이상민님의 프로필 이미지
이상민
질문자

감사합니다! 조판부호 기준인줄몰랐네요 2002년형 조판부호 키니깐 깔끔하게 진행될것같습니다!!

혼자 좀 해보다가 잘안되는거 있을때 또 문의하겠습니다. 감사합니다

1

이상민님의 프로필 이미지
이상민
질문자

hwp.select_ctrl(Table_list[Table_index])

후 표가 선택 된다음

hwp.TableCellBlock() 
hwp.TableCellBlockExtend()
hwp.TableCellBlockExtend()

이녀석이 안먹습니다..ㅠ

일코님의 프로필 이미지
일코
지식공유자

상민님, 안녕하세요?

1. hwp.select_ctrl() 이후 셀 선택방법

hwp.select_ctrl(Table_list[Table_index]) 코드로 표를 선택했을 때에는

표 전체가 선택된, 아래와 같은 상태가 됩니다.

{97C65614-9EE9-4B43-8639-C801766DD083}.png

이 상태에서는 셀 선택 명령어들이 작동하지 않습니다.

hwp.ShapeObjTextBoxEdit() 코드로 A1 셀에 진입하신 후에야 셀선택 코드가 작동합니다.

참고로 hwp.ShapeObjTextBoxEdit() 대신
hwp.ShapeObjTableSelCell() 코드를 실행하면, A1셀 블록선택 상태가 됩니다.

 

이렇게 A1 셀에 진입하고 나면

hwp.TableCellBlock() 
hwp.TableCellBlockExtend()
hwp.TableCellBlockExtend()

위 코드가 작동하게 됩니다. 아래는 시연화면입니다.

녹화_2024_12_05_20_53_01_5.gif

 

2. hwp.get_into_nth_table(idx)

hwp.get_into_nth_table(idx) 메서드는

글자처럼 취급이 되었든 안 되었든 해당 인덱스의 표 A1 셀로 진입해야 정상입니다ㅜ

만약 표 진입은 되는데, 엉뚱한 순서의 표로 들어가는 경우가 있기는 합니다.

글자처럼 취급이 꺼진 상태이면서, 조판부호와 표 위치가 다른 경우입니다.

(눈에 보이는 표 위치가 아니라 조판부호의 위치를 기준으로 인덱스가 매겨집니다.)

녹화_2024_12_05_20_32_24_580.gif

 

3. hwp.move_to_ctrl(idx)

질문 본문 두 번째에 보여주신 hwp.move_to_ctrl() 메서드도, 아래처럼 작동해야 합니다.

녹화_2024_12_05_20_34_27_601.gif
Table_list = [i for i in hwp.ctrl_list if i.UserDesc == "표"]
Table_index = 2

hwp.move_to_ctrl(Table_list[Table_index])
hwp.find_ctrl()
hwp.ShapeObjTableSelCell()  # A1 셀을 선택한 상태가 됨

조판부호가 잠시 켜지는 이유도
실은 "글자처럼 취급"이 해제된 표들을 정확하게 선택하기 위한 목적입니다..

 

제 데스크탑이나 노트북에서는 정상(?) 작동하는 듯 한데ㅜㅜㅜ
혹시 pyhwpx 모듈 업데이트가 안 되어 있는지도 모르겠습니다..(현재 0.41.2입니다.)

만약 hwp파일이 문제라면,
새 문서에서 표를 몇 개만 만들어놓은 상태에서
테스트 한 번 부탁드립니다. (위의 움짤들처럼 작동해야 합니다.)

 

새 문서에서는 작동하는데, 특정 문서에서만 실행이 되지 않는다면
해당 문서를 martinii.fun@지메일로 공유해주시면
원인이나 해결방법을 찾아드리도록 하겠습니다.

 

감사합니다.

1

안녕하세요, 인프런 AI 인턴입니다. 이상민님.

파이썬 pyhwpx 모듈을 사용하여 문서 내의 모든 표를 저장하고 순회하면서 작업을 수행하고 싶으신 것 같습니다. 또한, “글자처럼 취급”을 해제한 표에 대한 조작을 어떻게 해야 할지 막막해하시는 듯합니다. 이에 대한 해결책을 제공할 수 있는 몇 가지 방법과 참고할 수 있는 자료를 제공해 드리겠습니다.

우선, 관련 질문에 대한 기존의 자세한 답변들을 참고하시기 바랍니다:

  1. 표 내부 진입이 안되는 경우: 이 답변에서는 읽기 전용 속성을 해제하고 Execute 메서드를 사용하여 문제가 해결되는 방법을 설명합니다.

  2. hwp.FindCtrl() 에서 표를 한번에 선택하지 못 하는 문제: 이 답변에서는 SelectCtrlFrontSelectCtrlReverse를 사용하여 문제를 해결하는 방법을 제시합니다.

다양한 방법으로 “글자처럼 취급”이 해제된 표를 조작할 수 있으니 다음 방법들을 참고해 보세요:

해결 방법 요약:

  1. 커서를 표 근처로 이동시키기: MovePos(2)를 사용하여 문서의 시작으로 이동 후, FindCtrl을 통해 표 근처로 커서를 위치시킬 수 있습니다.
hwp.MovePos(2)  # 문서 시작으로 이동
hwp.FindCtrl()  # 컨트롤을 찾아 커서 이동
  1. 표 선택을 위해 SelectCtrlFront 사용: 이 방법은 표가 아닌 다른 컨트롤이 근처에 있는 경우에도 명확히 표를 선택하는 데 도움을 줍니다.
hwp.HAction.Run("SelectCtrlFront")
  1. pyhwpx 모듈을 통한 표 선택: pyhwpx를 사용하면 표의 첫 번째 셀로 더욱 쉽게 접근할 수 있는 방법도 있습니다.
hwp.get_into_nth_table(target_index)
hwp.SelectCtrlFront()

강력한 기능들은 모두 하이퍼텍스트 설명(HTP)과 연관이 있으므로, 각 메서드에 대한 이해를 높이기 위해 모듈의 문서화를 참고하면 좋습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.

현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏

추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

이상민님의 프로필 이미지
이상민

작성한 질문수

질문하기