inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

한글-파이썬 : 바탕쪽, 다단

해결된 질문

738

채희원

작성한 질문수 1

2

안녕하세요. 파이썬으로 한글자동화 업무를 위해 공부하고있습니다.

바탕쪽 혹은 다단으로 들어가는 코드에서

파이썬코드로 문법을 바꾸어도 편집모드로 들어가지지 않거나 실행이 되지 않습니다.

혹시 다른 방법이 있는지 궁금합니다!

 

  1. 바탕쪽

hwp.HAction.GetDefault("MasterPage", hwp.HParameterSet.HMasterPage.HSet)
hwp.HParameterSet.HMasterPage.Duplicate = 0
hwp.HParameterSet.HMasterPage.Front = 0
hwp.HParameterSet.HMasterPage.Type = 0
hwp.HParameterSet.HMasterPage.HSet.SetItem("ApplyTo", 2)
hwp.HAction.Execute("MasterPage", hwp.HParameterSet.HMasterPage.HSet)

--------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
Cell In[7], line 2
      1 hwp.HAction.GetDefault("MasterPage", hwp.HParameterSet.HMasterPage.HSet)
----> 2 hwp.HParameterSet.HMasterPage.SetItem(Duplicate, 0)
      3 hwp.HParameterSet.HMasterPage.SetItem(Front, 0)
      4 hwp.HParameterSet.HMasterPage.SetItem(Type ,0)

File ~\anaconda3\Lib\site-packages\win32com\client\__init__.py:580, in DispatchBaseClass.__getattr__(self, attr)
    578 args = self._prop_map_get_.get(attr)
    579 if args is None:
--> 580     raise AttributeError(
    581         "'%s' object has no attribute '%s'" % (repr(self), attr)
    582     )
    583 return self._ApplyTypes_(*args)

AttributeError: '<win32com.gen_py.HwpObject 1.0 Type Library.HMasterPage instance at 0x1349180151824>' object has no attribute 'SetItem'

 

2.다단

 

hwp.HAction.GetDefault("MultiColumn", hwp.HParameterSet.HColDef.HSet)
hwp.HParameterSet.HColDef.Count = 2
hwp.HParameterSet.HColDef.SameGap = MiliToHwpUnit(8.0)
hwp.HParameterSet.HColDef.HSet.SetItem("ApplyClass", 832)
hwp.HParameterSet.HColDef.HSet.SetItem("ApplyTo", 6)
hwp.HAction.Execute("MultiColumn", hwp.HParameterSet.HColDef.HSet)

---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
Cell In[5], line 3
      1 hwp.HAction.GetDefault("MultiColumn", hwp.HParameterSet.HColDef.HSet)
      2 hwp.HParameterSet.HColDef.Count = 2
----> 3 hwp.HParameterSet.HColDef.SameGap = MiliToHwpUnit(8.0)
      4 hwp.HParameterSet.HColDef.HSet.SetItem("ApplyClass", 832)
      5 hwp.HParameterSet.HColDef.HSet.SetItem("ApplyTo", 6)

NameError: name 'MiliToHwpUnit' is not defined

python 한컴오피스 바탕쪽 다단

답변 1

2

일코

희원님 안녕하세요?^^

(어떤 작업을 하시려는지 잘은 모르겠지만)

아래와 같이 코드를 수정하시면
말씀하신 작업은 잘 적용되는 것 같습니다.
참고하시기 바랍니다.

image

# 바탕쪽 진입 코드
pset = hwp.HParameterSet.HMasterPage
hwp.HAction.GetDefault("MasterPage", pset.HSet)
pset.Duplicate = 0
pset.Front = 0
pset.type = 0  # <--
pset.HSet.SetItem("ApplyTo", 2)
hwp.HAction.Execute("MasterPage", pset.HSet)

# 다단 설정
pset = hwp.HParameterSet.HColDef
hwp.HAction.GetDefault("MultiColumn", pset.HSet)
pset.Count = 3
pset.SameGap = hwp.MiliToHwpUnit(8.0)  # <--
pset.HSet.SetItem("ApplyClass", 832)
pset.HSet.SetItem("ApplyTo", 6)
hwp.HAction.Execute("MultiColumn", pset.HSet)

1

채희원

정말 사소한 것 때문에 작동이 안되는 거였군요... 잘 작동됩니다. 정말 감사합니다.

바탕쪽에서 Type 가아닌 type인 것을 알 수 있는 방법이 있을까요?

한컴에서 제공되는 파일들 (API, 파라미터액션등..)에서 찾아볼 수는 있는지...

2

일코

파라미터는 쉽게 찾으실 수 있습니다.

귀찮은 작업 딱 한 번만 하시면 되는데ㅜ

  1. 가상환경 폴더(venv)/Lib/site-package/pythonwin/start_pythonwin.pyw 실행

  2. tools - COM Makepy utility 선택

  3. 라이브러리 중 "HwpObject 1.0 Type Library (1.0)" 찾아서 선택 후 "OK"

  4. 아래 경로의 7D2B6F3C-~.py 파일을 찾아서 프로젝트 폴더로 복사

image

  1. 위 파일을 틈틈이 열어서 "class 파라미터셋 이름"으로 검색하시면 관련 아이템들이 나옵니다.

예를 들어 HColDef의 파라미터를 찾아보면 _propmap_get_ 안에

image

이렇게 파라미터셋의 아이템들이 나와 있습니다.

 

더 쉬운 방법으로는

>>> hwp.HParameterSet.HColDef._prop_map_get_
{'Count': (16417, 2, (18, 0), (), 'Count', None),
 'HSet': (1, 2, (9, 0), (), 'HSet', None),
 'Layout': (16421, 2, (18, 0), (), 'Layout', None),
 'LineColor': (16424, 2, (19, 0), (), 'LineColor', None),
 'LineType': (16422, 2, (18, 0), (), 'LineType', None),
 'LineWidth': (16423, 2, (18, 0), (), 'LineWidth', None),
 'SameGap': (16419, 2, (3, 0), (), 'SameGap', None),
 'SameSize': (16418, 2, (18, 0), (), 'SameSize', None),
 'WidthGap': (16420, 2, (9, 0), (), 'WidthGap', None),
 'type': (16416, 2, (18, 0), (), 'type', None)}

이렇게 직접 파라미터셋._prop_map_get_.keys() 등을 호출하셔서 확인하는 방법도 있습니다.

 

참고하시기 바랍니다^^

섹션7과 같은 수학 수식을 백지에서 시작할 때 어떻게 만들 수 있을까요?

0

76

1

hwp 병렬 작업시 클립보드 충돌문제

0

58

1

본문을 각주로 내리는 법

1

93

1

한글 자동화 삽도 삽입!!

1

384

2

한글 표 내부 위치 찾는 코드좀 알려주세요 ㅠㅠ

1

233

2

빈 문서를 새로 열때는 팝업이 안나오는데 기존 문서를 열면 팝업이 나옵니다

1

118

2

사무실 컴퓨터ㅠ

0

96

2

글자입력 여러번 실행기

0

67

1

현재 커서 문단에 아무런 내용이 없는지 확인하기

1

102

1

특정 스타일을 찾아 이동하는 방법

1

162

2

한/글 파일 open 시 '상위 버전에서...' 메세지 안 뜨게 하는 방법?

1

1108

1

win32com 으로 hwp 문자열 검색하기 문의

1

222

2

[응용] 엑셀문서 값을 필드에 입력하기 질

1

123

1

표 병합하기 관련

0

140

0

메타태그 삽입 자동화

0

191

1

스크립트 매크로 초기화 하고 싶습니다.

1

270

2

한글 창이 여러 개 존재할 때 pyhwpx 모듈로 접근하는 방법을 알고 싶습니다.

1

271

1

표안의 특정 필드에 있는 이미지를 복사하여 한글 외부에 저장하기

1

273

2

스타일 싹 다 지우고 바탕글로 통일하는 방법 문의드립니다.

1

283

0

하위의 여러 폴더 중 특정폴더의 사진만 추출하기

1

345

2

한글 수식을 자동으로 넣는 코드를 만들었는데, 수식 사이의 간격이 계속 벌어집니다.

1

658

1

보유 특허 검색 페이지에서 검색이 되지 않습니다.

1

139

1

hwp 페이지별 분할 저장하는 코드 관련 문의

0

447

0

한글 문서에 사용된 폰트명 추출

1

646

1