본문 바로가기
아래아한글 자동화/pyhwpx 사용법

[pyhwpx 개발일지] 여러 표를 병합하는 TableMergeTable

by 일코 2024. 1. 14.

기존 API에서 실행방법은 아래와 같다.

import win32com.client as win32
hwp = win32.gencache.EnsureDispatch("hwpframe.hwpobject")

hwp.HAction.Run("TableMergeTable")

현재 표 아래 (다른 내용 없이) 표가 있는 경우
현재 표와 아래의 표 하나를 병합한다.
표가 없는 경우 False를 리턴하며, 오류팝업이 하나 발생한다.

또한 "셀 선택" 상태에서는 작동하지 않는다.

 

그래서 pyhwpx.Hwp()의 TableMergeTable 메서드는
위 작동방식을 조금 수정했다. 

1. 표가 없는 경우 False를 리턴하되, 오류메시지는 뜨지 않게.

처음엔 단순히
SetMessageBoxMode(0x1)로 간단히 팝업을 안 뜨게 할 수 있을 줄 알았는데,
이 오류팝업은 이상하게 뜬다. 뭐가 이상하냐면,
뭔가 내부적으로 비동기로 진행되는 것처럼,
Run("TableMergeTable") 실행 후 0.01초 기다렸다가
SetMessageBoxMode(0xF)를 실행하면 팝업이 떠버리는데
0.1초 기다렸다가 실행하면 팝업이 뜨지 않는 이상한 현상ㅜㅜㅜ
(아마 내부적으로 TableMergeTable 실행시 비동기 방식의 어떤 절차가 있어서 그렇겠지 싶다.. 흠)
내 PC에서는 sleep(0.03) 이하에서는 오류메시지가 떠버린다.
그래서 sleep(0.1) 정도를 주는 정도로 합의하기로 했다.

그래도 다행이지. 현재 표 밑에 표가 없는지 직접 탐색하게 우회하진 않아도 되잖아?

2. 셀 선택 상태에서도 아래 표와의 병합이 가능하게

이건 단순히 메서드 처음에 hwp.HAction.Run("Cancel")을 한 번 실행하게 코드를 추가했다.

그래서 최종 코드는 아래와 같이 작동한다.

1. 팝업이 뜨지 않게, 2. 셀선택 상태에서도 실행되게

미미한 한 걸음이지만
오늘도 한 건 했다.

댓글