해결된 질문
작성
·
95
·
수정됨
1
안녕하세요~ 일코님
무더위에 건강 잘 챙기시기 바랍니다.
메시지 박스 모드가 제가 볼떄는 Yes 아니면 No인 부분이라 생각해서
hwp.SetMessageBoxMode(0x10000)
요렇게 설정을 했는데요.
이렇게 설정했음에도 불구하고 왜 계속 메시지박스가 뜨는걸까요??
메시지박스 관련 코드는
MB_MASK 0x00FFFFFF
1. 확인만 : IDOK(1)
MB_OK_ODOK 0x00000001
MB_OK_MASK 0x0000000F
2. 확인/취소 (MB_OKCANCEL) : IDOK(1), IDCANCEL(2)
MB_OKCANCEL_IDOK 0x00000010
MB_OKCANCEL_IDCANCEL 0x00000020
MB_OKCANCEL_MASK 0x000000F0 # 적용시 hwp.SetMessageBoxMode(0xF0)
3. 종료/재시도/무시(MB_ABORTRETRYIGNORE) : IDABORT(3), IDRETRY(4), IDIGNORE(5)
MB_ABORTRETRYIGNORE_IDABORT 0x00000100
MB_ABORTRETRYIGNORE_IDRETRY 0x00000200
MB_ABORTRETRYIGNORE_IDIGNORE 0x00000400
MB_ABORTRETRYIGNORE_MASK 0x00000F00
4. 예/아니오/취소(MB_YESNOCANCEL) : IDYES(6), IDNO(7), IDCANCEL(2)
MB_YESNOCANCEL_IDYES 0x00001000
MB_YESNOCANCEL_IDNO 0x00002000
MB_YESNOCANCEL_IDCANCEL 0x00004000
MB_YESNOCANCEL_MASK 0x0000F000
5. 예/아니오(MB_YESNO) : IDYES(6), IDNO(7)
MB_YESNOCANCEL_IDYES 0x00010000
MB_YESNOCANCEL_IDNO 0x00020000
MB_YESNOCANCEL_MASK 0x000F0000
6. 재시도/취소(MB_RETRYCANCEL) : IDRETRY(4), IDCANCEL(2)
MB_RETRYCANCEL_IDRETRY 0x00100000
MB_RETRYCANCEL_IDCANCEL 0x00200000
MB_RETRYCANCEL_MASK 0x00F00000
이렇게 정리해놨는데요.
저는 5번케이스라고 생각했는데 2번 케이스에 해당하는걸까요?
케이스를 구분하는건 어떤 기준인지 궁금합니다!
그리고 두번째로는,
hwp를 수정하고 저장한뒤, PDF로도 추가로 저장하고자 하여
아래와 같이 코드를 작성해 보았는데요.
# hwp 저장
hwp.save_as(save_path_문제지)
# pdf 로 저장하기 위해서 경로 할당
파일이름, _ = os.path.splitext(os.path.basename(save_path_문제지))
저장경로 = os.path.join(os.path.dirname(save_path_문제지), 파일이름 + ".pdf")
# pdf로 저장하기
hwp.SaveAs(Path=os.path.join(os.path.dirname(save_path_문제지), 파일이름 + ".pdf"), Format="PDF")
그런데 터미널에 아래와 같은 오류가 뜨네요...
TypeError: Hwp.SaveAs() got an unexpected keyword argument 'Path'
이전에는 잘작동했떤 코드같은데 왜 안되는 걸까요?
잘부탁드립니다!! 늘 감사합니다.!
답변 1
1
병현님 안녕하세요?
사실 저도 아직 케이스의 구분기준을 정확히 몰라서
특정 메시지박스를 자동클릭하고 싶을 때 항상 시행착오를 겪습니다.
눈에 보이는 팝업은 [확인/취소] 인데, 내부에서는 [예/아니오] 라든지..
그래서 제 루틴은 아래와 같습니다.
① 우선 자동클릭이 되는지 확인하기 위해 모든 옵션을 1로 바꿔본다.
hwp.SetMessageBoxMode(0x111111)
② 만약 작동한다면, 아닌 것 같은 옵션부터 F로 바꿔본다.
hwp.SetMessageBoxMode(0x11F11F)
hwp.SetMessageBoxMode(0xF1F11F)
hwp.SetMessageBoxMode(0xF1FF1F)
hwp.SetMessageBoxMode(0xFFFF1F)
③ 하나가 골라질 때까지 반복하다가, 찾아냈으면 그 코드를 쓴다.
hwp.SetMessageBoxMode(0x000010)
# 클릭이 필요한 동작 수행
hwp.SetMessageBoxMode(0x0000F0)
이런 식으로 작업해보시면 금방 찾으실 수 있을 겁니다.
(사실 시행착오 없이 0x111111
로 전부 "예"를 클릭하게 하고, 0xFFFFFF
로 다시 자동클릭을 꺼도 되겠습니다..)
오토메이션API의 SaveAs의 파라미터는 Path인데,
pyhwpx.Hwp의 SaveAs 파라미터는 path입니다. (P가 소문자예요.)
해결방법은 Path=...
부분을 path=
으로 바꾸시거나,
아예 파라미터명을 쓰지 않는 것입니다.
hwp.SaveAs(os.path.join(os.path.dirname(save_path_문제지), 파일이름 + ".pdf"), "PDF")
마찬가지로 Format 파라미터도 format으로 바뀌어 있습니다.
당시에는 소문자 파라미터가 파이썬스럽다고 생각해서 바꾼 건데,
사용자 분들이 많이 어려워하시는 것 같습니다.
근데, 이 모듈로 솔루션을 구축하신 분들이 계셔서ㅜ
지금와선 바꾸기도 어렵고... 그런 상태입니다.
사용하시는 IDE에 따라, 괄호 안에서 Ctrl
- P
나 Ctrl
- Space
등을 눌러 자동완성해보시면
파라미터 목록이 보일 것입니다.
파이참 기준으로 순서대로
① 메서드 위에서 Ctrl-Q,
② 괄호 안에서 Ctrl-P,
③ 괄호 안에서 Ctrl-Space를 누른 상태입니다.
도움이 되었길 바랍니다^^;
행복한 하루 되세요!!!
아하~~ 너무나 명쾌합니다... 오래간 한 분야에 몰입하셔서 얻은 지식을 이렇게 쉽게 학습할수 있게 해주셔서 진심으로 감사합니다. 덕분에 저는 더 효율적으로 일하면서 일에서 행복을 찾고 있습니다. 일코님도 행복한 하루되세요.