한글 점끌기 탭 구현
강의를 보고 나서...한글서식을 자동하는것을 구현(단순 입력 수준이지만..ㅎㅎ) 해보고 있습니다.
자주쓰는 문서 서식을 자동입력하기 위해...파이썬으로 점끌기 탭을 구현하려고 합니다..
한글에서 스트립트 녹화해서...파이썬으로 코드를 옮겼는데....
에러는 안나는데...한글에 적용이 안됩니다...
hwp.HAction.GetDefault("ParagraphShape", hwp.HParameterSet.HParaShape.HSet)
hwp.HParameterSet.HParaShape.TabDef.CreateItemArray("TabItem", 3)
hwp.HParameterSet.HParaShape.TabDef.TabItem.SetItem(0, hwp.MiliToHwpUnit(200))
hwp.HParameterSet.HParaShape.TabDef.TabItem.SetItem(1, 3)
hwp.HParameterSet.HParaShape.TabDef.TabItem.SetItem(2, 1)
hwp.HAction.Execute("ParagraphShape", hwp.HParameterSet.HParaShape.HSet)Item(0)은 탭크기(? 위치), Item(1)은 탭선 종류, Item(2)는 방향(? 왼쪽, 오른쪽 등)으로 세개가 한세트라는 것까지는 한글API메뉴얼을 보고 확인은 했는데...
혹시나 MiliToHwpUnit()가 잘못됐나 싶어서..그냥 일반 숫자로 40000으로 입력도 해보고 해도..
해답을 못찾았습니다..
혹시 문제가 있는 부분을 알려 주실수 있을런지요? ㅜㅜ
답변 2
1
안녕하세요?
제가 강의 중간에 너무 얄팍하게 다뤄서, 이 부분이 아직 생소하신 것 같습니다ㅜㅜㅜ
> 다른 분들도 이 질문을 많이 참고하시면 좋겠어요...
스크립트녹화 코드가 잘 작동하지 않는 경우
파라미터셋과 서브셋을 모두 변수로 지정해야만
잘 동작하는 경우가 더러 있습니다.
질문 주신 경우도 그런 대표적인 경우인데요.
아래와 같이 실행해보시면 잘 작동할 것입니다.
Set = hwp.HParameterSet.HParaShape
hwp.HAction.GetDefault("ParagraphShape", Set.HSet)
tab_def = Set.TabDef
tab_def.CreateItemArray("TabItem", 3)
tab_def.TabItem.SetItem(0, 80000)
tab_def.TabItem.SetItem(1, 3)
tab_def.TabItem.SetItem(2, 0)
hwp.HAction.Execute("ParagraphShape", Set.HSet)참고로, tab_def변수는 GetDefault 라인 실행 이후에 선언해야 합니다. 그렇지 않으면 제대로 실행되지 않습니다.
저도 굉장히 오랜 시행착오를 거쳐 알게 된 부분인데, 유독 파이썬에서만 이렇게 코딩해야 하는 것 같습니다.

정확한 이유는 잘 모르겠지만,
아마 Set이나 tab_def 같은 변수를 지정하지 않으면
매번 SetItem으로 값을 대입할 때마다 Action과 상관없는 임의의 메모리주소에 (랜덤하게) 들어가버리는 거라고 짐작해봅니다.
답변이 도움이 되었길 바랍니다ㅎㅎㅎ
1
^^ 앗..해법을 찾지 못해 한동안 손 놓고 있었는데....
답변 감사합니다...^^
차라리 첨부터 해법처럼..set을 지정해서 사용하는 방법으로 습관을 들리도록 하겠습니다...^^
좀 쉽게 가볼려다....역시 정공법이 최고네요..ㅋㅋ
추신: ㅋㅋ..다른 안되던 기능인..글라데이션도 이것으로 해결되었네요..감사합니다.
앞으로 그냥 이폼으로 작성토록 하겠음당..^^
1
일코님께서 작성해주신 코드 사용 시,
기존에 사용 하던 문서에 적용은 안되는건가요??
import win32com.client as win32
hwp = win32.gencache.EnsureDispatch("hwpframe.hwpobject") # 한/글을 파이썬으로 실행. 에러나면 gen_py 폴더 삭제
hwp.XHwpWindows.Item(0).Visible = True # 한/글 프로그램의 백그라운드 숨김을 해제하는 코드
hwp.RegisterModule("FilePathCheckDLL", "FilePathCheckerModule") # 보안모듈
로 새 한글 문서를 연 후, 문의사항을 통해 알려주신 코드를 실행시킬 경우에만 작동이 되더라고요
1
형주님 안녕하세요?
win32나 pyhwpx 둘 중 어느 걸로 한/글을 여셨든지
HAction과 HParameter를 이용한 매크로 실행은
동일한 코드로 적용하실 수 있습니다.
(다만.. 최신업데이트를 해 주셔야 합니다ㅜ : pip install --upgrade pyhwpx)
현재 최신버전은 0.10.20 입니다.
아래는 pyhwpx를 사용한 예시화면

from pyhwpx import Hwp
# 한/글 실행
hwp = Hwp()
# 글자크기 설정(40 pt)
hwp.set_font(Height=40)
# 텍스트 삽입
hwp.insert_text("A\t1\r\nB\t2\r\nC\t3\r\nD\t4\r\n")
# 점끌기 탭 구현
hwp.SelectAll()
Set = hwp.HParameterSet.HParaShape
hwp.HAction.GetDefault("ParagraphShape", Set.HSet)
tab_def = Set.TabDef
tab_def.CreateItemArray("TabItem", 3)
tab_def.TabItem.SetItem(0, 80000)
tab_def.TabItem.SetItem(1, 3)
tab_def.TabItem.SetItem(2, 0)
hwp.HAction.Execute("ParagraphShape", Set.HSet)
hwp.Cancel()
아래는 win32com을 사용한 예시화면

import win32com.client as win32
# 한/글 실행
hwp = win32.gencache.EnsureDispatch("hwpframe.hwpobject")
hwp.XHwpWindows.Item(0).Visible = True
# 글자크기 조절(40 pt)
pset = hwp.HParameterSet.HCharShape
hwp.HAction.GetDefault("CharShape", pset.HSet)
pset.Height = 40 * 100
hwp.HAction.Execute("CharShape", pset.HSet)
# 텍스트 삽입
pset = hwp.HParameterSet.HInsertText
hwp.HAction.GetDefault("InsertText", pset.HSet)
pset.Text = "A\t1\r\nB\t2\r\nC\t3\r\nD\t4\r\n"
hwp.HAction.Execute("InsertText", pset.HSet)
# 점끌기 탭 구현
hwp.Run("SelectAll")
Set = hwp.HParameterSet.HParaShape
hwp.HAction.GetDefault("ParagraphShape", Set.HSet)
tab_def = Set.TabDef
tab_def.CreateItemArray("TabItem", 3)
tab_def.TabItem.SetItem(0, 80000)
tab_def.TabItem.SetItem(1, 3)
tab_def.TabItem.SetItem(2, 0)
hwp.HAction.Execute("ParagraphShape", Set.HSet)
hwp.Run("Cancel")보시다시피 "점끌기 탭 구현" 코드 부분은 동일합니다^^
1
안녕하세요 배재완 님, 인프런 AI 인턴이에요.
한글 점끌기 탭을 구현하려고 파이썬 코드를 작성하셨는데, 적용이 안되는 문제로 고민 중이시군요. 코드를 보니 실행에는 문제가 없어 보입니다. 그런데 문제가 발생하는 부분을 파악하기 위해서는 더 많은 정보가 필요합니다.
- 코드 실행 시 어떤 에러 메시지나 문제가 발생하는지 확인할 수 있을까요?
- 사용하신 한글 버전 정보와 한글 API 메뉴얼을 참고하셨다면 버전 정보도 알려주세요.
- 점끌기 탭을 적용하려는 문단이나 문서의 어떤 부분에 적용하려고 하는지도 알려주세요.
위의 정보를 제공해 주시면 더 정확한 도움을 드릴 수 있을 것 같습니다. 감사합니다!
1
코드 실행시 에러는 발생하지 않습니다. 다만 한글에 해당 기능(점끌기탭)이 수행되지 않습니다.
한글 2020사용중이며, API 메뉴얼은 한글과컴퓨터 홈페이지에 현재 게시되어 있는 API 메뉴얼 참고 했습니다.
문서의 목차 서식에 적용할려고 합니다.
2-14.\x02 안보임 관련
0
27
1
섹션7과 같은 수학 수식을 백지에서 시작할 때 어떻게 만들 수 있을까요?
0
91
1
hwp 병렬 작업시 클립보드 충돌문제
0
73
1
본문을 각주로 내리는 법
1
111
1
한글 자동화 삽도 삽입!!
1
424
2
한글 표 내부 위치 찾는 코드좀 알려주세요 ㅠㅠ
1
273
2
빈 문서를 새로 열때는 팝업이 안나오는데 기존 문서를 열면 팝업이 나옵니다
1
141
2
사무실 컴퓨터ㅠ
0
109
2
글자입력 여러번 실행기
0
82
1
현재 커서 문단에 아무런 내용이 없는지 확인하기
1
122
1
특정 스타일을 찾아 이동하는 방법
1
188
2
한/글 파일 open 시 '상위 버전에서...' 메세지 안 뜨게 하는 방법?
1
1235
1
win32com 으로 hwp 문자열 검색하기 문의
1
231
2
[응용] 엑셀문서 값을 필드에 입력하기 질
1
131
1
표 병합하기 관련
0
154
0
메타태그 삽입 자동화
0
206
1
스크립트 매크로 초기화 하고 싶습니다.
1
299
2
한글 창이 여러 개 존재할 때 pyhwpx 모듈로 접근하는 방법을 알고 싶습니다.
1
286
1
표안의 특정 필드에 있는 이미지를 복사하여 한글 외부에 저장하기
1
310
2
스타일 싹 다 지우고 바탕글로 통일하는 방법 문의드립니다.
1
315
0
하위의 여러 폴더 중 특정폴더의 사진만 추출하기
1
379
2
한글 수식을 자동으로 넣는 코드를 만들었는데, 수식 사이의 간격이 계속 벌어집니다.
1
751
1
보유 특허 검색 페이지에서 검색이 되지 않습니다.
1
148
1
hwp 페이지별 분할 저장하는 코드 관련 문의
0
478
0





