반응형
기존 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")을 한 번 실행하게 코드를 추가했다.
그래서 최종 코드는 아래와 같이 작동한다.
미미한 한 걸음이지만
오늘도 한 건 했다.
반응형
'아래아한글 자동화 > pyhwpx 사용법' 카테고리의 다른 글
[pyhwpx] gradation_on_cell 활용 (0) | 2024.01.15 |
---|---|
[pyhwpx] 개발일지, get_into_nth_table 메서드에 대한 고찰? (0) | 2024.01.14 |
[pyhwpx 개발일지] 한/글 액션별 파라미터셋의 모든 아이템과 설명 (0) | 2024.01.12 |
댓글