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

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

작성한 질문수

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

질문을 남겨주세요.

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

해결된 질문

작성

·

29

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])

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

 

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

 

 

답변 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)과 연관이 있으므로, 각 메서드에 대한 이해를 높이기 위해 모듈의 문서화를 참고하면 좋습니다.

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

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

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

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

작성한 질문수

질문하기