inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

문서의 필드목록 및 필드 값 취득하기

파라미터 서브 타입 질문드립니다.

해결된 질문

308

YongJun(Passion)

작성한 질문수 14

1

안녕하세요 일코님

일코님 덕분에 많이 활용하고 있는 학생입니다.

다름이 아니라

ActionTable에서 파라미터가 있는 경우를 다루는 거까지는 잘 되는것 같지만

파라미터의 서브타입 있는 경우가 매우 어렵게 느껴집니다.

(강의에서 파라미터를 사용하는 방법까지는 이해가 되었지만 그 이후 서브 타입을 활용한 부분을 보는 예시가 있을까요?)

표의 배경색을 바꾸려다 서브타입을 지정해야하는데 이 부분이 잘 안됩니다.

python 한컴오피스

답변 1

1

일코

Jun님 안녕하세요?^^

한/글 매크로를 실행하는 다양한 방법이 있지만,

개인적으로는 CreateAction이나 CreateSet, CreateItemSet 등을 활용하는 게 너무 힘들어서

어디가 문제인지 찾기가 힘들더라고요ㅜ 매뉴얼이 너무 오래 된 것도 문제인 것 같고요..

하여튼 지금은 거의 대부분 스크립트매크로 방식을 그대로 활용하고 있어요.

 

예를 들면, CreateAction 방식은 아래처럼 짜는 거고

import win32com.client as win32
hwp = win32.gencache.EnsureDispatch("hwpframe.hwpobject")
hwp.XHwpWindows.Item(0).Visible = True


# 모든 여백을 0으로 하고, 좌우여백만 30mm로 설정하는 코드
Act = hwp.CreateAction("PageSetup")
Set = Act.CreateSet()
Act.GetDefault(Set)
Set.SetItem("ApplyTo", 3)  # 2:현재구역, 3:문서전체, 4:새구역으로
Pset = Set.CreateItemSet("PageDef", "PageDef")
Pset.SetItem("TopMargin", 0)
Pset.SetItem("BottomMargin", 0)
Pset.SetItem("LeftMargin", hwp.MiliToHwpUnit(30))
Pset.SetItem("RightMargin", hwp.MiliToHwpUnit(30))
Pset.SetItem("HeaderLen", 0)
Pset.SetItem("FooterLen", 0)
Pset.SetItem("GutterLen", 0)
Act.Execute(Set)

 

HAction 방식은 아래처럼 짜는 거예요.
동작은 동일하고요.

pset = hwp.HParameterSet.HSecDef
hwp.HAction.GetDefault("PageSetup", pset.HSet)
pset.PageDef.TopMargin = 0
pset.PageDef.BottomMargin = 0
pset.PageDef.LeftMargin = hwp.MiliToHwpUnit(30)
pset.PageDef.RightMargin = hwp.MiliToHwpUnit(30)
pset.PageDef.HeaderLen = 0
pset.PageDef.FooterLen = 0
pset.PageDef.GutterLen = 0
pset.HSet.SetItem("ApplyTo", 3)
hwp.HAction.Execute("PageSetup", pset.HSet)

 

별 차이 없는 것 같지만, 아래 방식의 장점은
① 서브셋(아이템셋)을 쓰지 않는다.
② API문서 대신 스크립트매크로를 통해서 액션아이디와 파라미터셋을 찾을 수 있다.

정도인 것 같아요.

 

그래서 두 번째 방식으로 말씀하신 표의 배경색을 바꾸는 예시는,

pset = hwp.HParameterSet.HCellBorderFill
hwp.HAction.GetDefault("CellBorderFill", pset.HSet)
pset.FillAttr.type = hwp.BrushType("NullBrush|WinBrush")
pset.FillAttr.WinBrushFaceColor = hwp.RGBColor(255, 132, 58)
pset.FillAttr.WinBrushHatchColor = hwp.RGBColor(153, 153, 153)
pset.FillAttr.WinBrushFaceStyle = hwp.HatchStyle("None")
pset.FillAttr.WindowsBrush = 1
hwp.HAction.Execute("CellBorderFill", pset.HSet)

 

이런 식으로 실행하시면 돼요.

추가로 궁금하신 점이 있으면 질문이나 댓글 남겨주세요^^

 

행복한 하루 되세요!!

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

0

76

1

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

0

60

1

본문을 각주로 내리는 법

1

93

1

한글 자동화 삽도 삽입!!

1

386

2

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

1

234

2

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

1

120

2

사무실 컴퓨터ㅠ

0

97

2

글자입력 여러번 실행기

0

70

1

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

1

103

1

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

1

166

2

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

1

1121

1

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

1

223

2

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

1

124

1

표 병합하기 관련

0

143

0

메타태그 삽입 자동화

0

191

1

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

1

273

2

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

1

271

1

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

1

278

2

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

1

286

0

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

1

346

2

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

1

668

1

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

1

141

1

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

0

451

0

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

1

649

1