페이지 단설정 매크로스크립트 미작동
안녕하세요 일코님
페이지의 단을 1단으로 변경하기 위해서,
한글에서 매크로 녹화를 하여 스크립트를 아래와 같이 땄습니다.
HAction.GetDefault("MultiColumn", HParameterSet.HColDef.HSet);
with (HParameterSet.HColDef)
{
Type = ColDefType("Newspaper");
CreateItemArray("WidthGap", 1);
WidthGap.Item(0) = MiliToHwpUnit(115.6);
LineType = HwpLineType("None");
HSet.SetItem("ApplyClass", 868);
HSet.SetItem("ApplyTo", 2);
}
HAction.Execute("MultiColumn", HParameterSet.HColDef.HSet);
이 매크로를 사용하기 위해서
hwp.HAction.GetDefault("MultiColumn", hwp.HParameterSet.HColDef.HSet)
hwp.HParameterSet.HColDef.Type = hwp.ColDefType("Newspaper")
hwp.HParameterSet.HColDef.CreateItemArray("WidthGap", 1)
hwp.HParameterSet.HColDef.WidthGap.Item(0) = hwp.MiliToHwpUnit(115.6)
hwp.HParameterSet.HColDef.HSet.SetItem("ApplyClass", 868)
hwp.HParameterSet.HColDef.HSet.SetItem("ApplyTo", 2)
hwp.HAction.Execute("MultiColumn", hwp.HParameterSet.hwp.HColDef.HSet)
이렇게 코드를 작성했는데요.
문제는 두번째 줄인 hwp.HParameterSet.HColDef.Type 이부분과
네번째 줄 hwp.HParameterSet.HColDef.WidthGap.Item(0) 입니다.
두번째 줄을 실행했을 때
AttributeError: '<win32com.gen_py.HwpObject 1.0 Type Library.HColDef instance at 0x1617095373456>' object has no attribute 'Type'
이러한 에러메시지가 뜨고
네번째 줄은
hwp.HParameterSet.HColDef.WidthGap.Item(0) = hwp.MiliToHwpUnit(115.6)
IndentationError: unexpected indent
이렇게 나오는데요.. 뭐가문제일까요?
늘 친절하고 자세하게 답변해주셔서 정말 감사합니다!
답변 1
1
병현님 안녕하세요?
AttributeError: '<win32com.gen_py.HwpObject 1.0 Type Library.HColDef instance at 0x1617095373456>' object has no attribute 'Type'
위 오류는 스크립트매크로를 파이썬으로 옮길 때 자주 발생하는 오류인데요. win32 API를 파이썬 클래스로 변환하면서 파이썬 문법이 아닌 부분이 충돌하기 때문에, 스크립트매크로 문법과 파이썬 문법이 약간 달라집니다.
대표적으로
hwp.HParameterSet.HColDef.WidthGap.Item(0) = hwp.MiliToHwpUnit(115.6)위와 같은 코드는 아래처럼 변경해주시면 됩니다.
hwp.HParameterSet.HColDef.WidthGap.SetItem(0, hwp.MiliToHwpUnit(115.6))
그리고 두 번째 오류인
IndentationError: unexpected indent
이 오류메시지는 들여쓰기 관련 오류인데요.
지금 모든 줄에 들여쓰기가 일괄 적용되어 있는 것으로 보입니다.
hwp. 앞의 들여쓰기들을 모두 삭제해주시면 해결될 것 같습니다.
안 되는 부분 있으면 또 알려주세요^^
더위 잘 피하시고, 행복한 하루 되세요~
<참고>
코드 마지막 줄에 "hwp." 이 중간에 하나 더 들어가 있어서 오류가 나요.
그리고 보통 HColDef.Count가 들어가야 할 것 같은데,
복사해주신 코드에는 그게 없어서 이상하네요.
참고하시라고 다단 관련 샘플코드 몇 개 드려볼게요.
def script_macro1(): # 단순 다단
pset = hwp.HParameterSet.HColDef
hwp.HAction.GetDefault("MultiColumn", pset.HSet)
pset.Count = 2
pset.SameGap = hwp.MiliToHwpUnit(8.0)
pset.HSet.SetItem("ApplyClass", 832)
pset.HSet.SetItem("ApplyTo", 6)
hwp.HAction.Execute("MultiColumn", pset.HSet)
def script_macro2(): # 프리셋 활용하는 다단
pset = hwp.HParameterSet.HColDef
hwp.HAction.GetDefault("MultiColumnPreset1", pset.HSet)
pset.type = hwp.ColDefType("Newspaper")
pset.SameSize = 1
pset.Count = 2
pset.Layout = hwp.ColLayoutType("Left")
pset.SameGap = hwp.MiliToHwpUnit(8.0)
pset.LineType = hwp.HwpLineType("None")
pset.LineWidth = hwp.HwpLineWidth("0.1mm")
pset.LineColor = hwp.RGBColor(0, 0, 0)
pset.HSet.SetItem("ApplyClass", 832)
pset.HSet.SetItem("ApplyTo", 6)
hwp.HAction.Execute("MultiColumnPreset1", pset.HSet)
def script_macro3(): # 병현님 코드(오류남)
hwp.HAction.GetDefault("MultiColumn", hwp.HParameterSet.HColDef.HSet)
hwp.HParameterSet.HColDef.type = hwp.ColDefType("Newspaper")
hwp.HParameterSet.HColDef.CreateItemArray("WidthGap", 1)
hwp.HParameterSet.HColDef.WidthGap.SetItem(0, hwp.MiliToHwpUnit(115.6))
hwp.HParameterSet.HColDef.HSet.SetItem("ApplyClass", 868)
hwp.HParameterSet.HColDef.HSet.SetItem("ApplyTo", 2)
hwp.HAction.Execute("MultiColumn", hwp.HParameterSet.HColDef.HSet)
def script_macro4(): # 병현님 코드에 Count 라인만 더함
pset = hwp.HParameterSet.HColDef
hwp.HAction.GetDefault("MultiColumn", pset.HSet)
pset.Count = 2
hwp.HParameterSet.HColDef.CreateItemArray("WidthGap", 1)
hwp.HParameterSet.HColDef.WidthGap.SetItem(0, hwp.MiliToHwpUnit(115.6))
pset.HSet.SetItem("ApplyClass", 868)
pset.HSet.SetItem("ApplyTo", 2)
hwp.HAction.Execute("MultiColumn", pset.HSet)
1
감사합니다!
잘 되는듯 하였는데...
코드를 아래와 같이 썼거든요.
hwp.HAction.GetDefault("MultiColumn", hwp.HParameterSet.HColDef.HSet)
hwp.HParameterSet.HColDef.type = hwp.ColDefType("Newspaper")
hwp.HParameterSet.HColDef.Count = 1
hwp.HParameterSet.HColDef.CreateItemArray("WidthGap", 1)
hwp.HParameterSet.HColDef.WidthGap.SetItem(0,hwp.MiliToHwpUnit(115.6))
hwp.HParameterSet.HColDef.LineType = hwp.HwpLineType("None")
hwp.HParameterSet.HColDef.HSet.SetItem("ApplyClass", 868)
hwp.HParameterSet.HColDef.HSet.SetItem("ApplyTo", 6)
hwp.HAction.Execute("MultiColumn", hwp.HParameterSet.HColDef.HSet)
hwp.HAction.Run("MoveDocEnd")
hwp.HAction.Run("MovePageBegin")
# 정답부분은 두 단으로
hwp.HAction.Run("BreakColDef")
hwp.HAction.Run("DeleteBack")
hwp.HAction.GetDefault("MultiColumn", hwp.HParameterSet.HColDef.HSet)
hwp.HParameterSet.HColDef.Count = 2
hwp.HParameterSet.HColDef.LineType = hwp.HwpLineType("Solid")
hwp.HParameterSet.HColDef.HSet.SetItem("ApplyClass", 864)
hwp.HParameterSet.HColDef.HSet.SetItem("ApplyTo", 5)
hwp.HAction.Execute("MultiColumn", hwp.HParameterSet.HColDef.HSet)(들여쓰기는 제대로 되어있습니다)
이부분을 실행할 때,
Traceback (most recent call last):
File "<stdin>", line 68, in <module>
File "C:\Users\samsung-user\anaconda3\Lib\site-packages\win32com\gen_py\7D2B6F3C-1D95-4E0C-BF5A-5EE564186FBCx0x1x0\HAction.py", line 35, in Execute
return self._oleobj_.InvokeTypes(15001, LCID, 1, (11, 0), ((8, 1), (9, 1)),actname
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
pywintypes.com_error: (-2147417851, '서버에서 예외 오류가 발생했습니다.', None, None)
터미널에 이런 오류가 발생합니다..ㅠㅠ 무슨문제일까요??
1
Count=1에서 오류가 나요.
Count가 1이면 다단을 쓰지 않겠다는 뜻인 같은데...
원래 하시려던 작업이 뭐였는지 잘 모르겠지만,
제가 녹화해서 작성한 다단해제 함수를 한 번 보내드려볼게요.
참고해주세요.
def 다단해제():
pset = hwp.HParameterSet.HColDef
hwp.HAction.GetDefault("MultiColumnPreset0", pset.HSet)
pset.type = hwp.ColDefType("Newspaper")
pset.SameSize = 1
pset.Count = 1
pset.Layout = hwp.ColLayoutType("Left")
pset.SameGap = hwp.MiliToHwpUnit(0.0)
pset.LineType = hwp.HwpLineType("None")
pset.LineWidth = hwp.HwpLineWidth("0.1mm")
pset.LineColor = hwp.RGBColor(0, 0, 0)
pset.HSet.SetItem("ApplyClass", 832)
pset.HSet.SetItem("ApplyTo", 6)
return hwp.HAction.Execute("MultiColumnPreset0", pset.HSet)
섹션7과 같은 수학 수식을 백지에서 시작할 때 어떻게 만들 수 있을까요?
0
76
1
hwp 병렬 작업시 클립보드 충돌문제
0
59
1
본문을 각주로 내리는 법
1
93
1
한글 자동화 삽도 삽입!!
1
384
2
한글 표 내부 위치 찾는 코드좀 알려주세요 ㅠㅠ
1
233
2
빈 문서를 새로 열때는 팝업이 안나오는데 기존 문서를 열면 팝업이 나옵니다
1
118
2
사무실 컴퓨터ㅠ
0
96
2
글자입력 여러번 실행기
0
67
1
현재 커서 문단에 아무런 내용이 없는지 확인하기
1
102
1
특정 스타일을 찾아 이동하는 방법
1
164
2
한/글 파일 open 시 '상위 버전에서...' 메세지 안 뜨게 하는 방법?
1
1112
1
win32com 으로 hwp 문자열 검색하기 문의
1
222
2
[응용] 엑셀문서 값을 필드에 입력하기 질
1
123
1
표 병합하기 관련
0
140
0
메타태그 삽입 자동화
0
191
1
스크립트 매크로 초기화 하고 싶습니다.
1
272
2
한글 창이 여러 개 존재할 때 pyhwpx 모듈로 접근하는 방법을 알고 싶습니다.
1
271
1
표안의 특정 필드에 있는 이미지를 복사하여 한글 외부에 저장하기
1
274
2
스타일 싹 다 지우고 바탕글로 통일하는 방법 문의드립니다.
1
283
0
하위의 여러 폴더 중 특정폴더의 사진만 추출하기
1
346
2
한글 수식을 자동으로 넣는 코드를 만들었는데, 수식 사이의 간격이 계속 벌어집니다.
1
661
1
보유 특허 검색 페이지에서 검색이 되지 않습니다.
1
139
1
hwp 페이지별 분할 저장하는 코드 관련 문의
0
448
0
한글 문서에 사용된 폰트명 추출
1
647
1





