해결된 질문
작성
·
100
1
안녕하세요 일코님. 늘 많은 도움 감사합니다.
셀필드명을 표에 차례대로 부여하는데,
매크로 녹화를 이용해서
아래와 같이 코드를 짜보았습니다.
hwp.move_to_field("답안")
index = 1
while hwp.TableLowerCell():
hwp.HAction.Run("TableCellBlock");
hwp.HAction.GetDefault("TablePropertyDialog", hwp.HParameterSet.HShapeObject.HSet);
hwp.HParameterSet.HShapeObject.ShapeTableCell.CellCtrlData.Name = f"{index}"
hwp.HAction.Execute("TablePropertyDialog", hwp.HParameterSet.HShapeObject.HSet)
hwp.Run("Cancle")
index += 1
그런데 이렇게 실행하였을 때,
AttributeError: '<win32com.gen_py.HwpObject 1.0 Type Library.HCtrlData instance at 0x2683750010768>' object has no attribute 'Name'
위와 같이 오류가 나는데요..
매크로 스크립트를 잘 복붙한거 같은데 어떻게 수정할 수 있을까요?
감사합니다!
답변 1
1
병현님 오랜만이에요!^^
일전에 도움 주신 거 정말 감사합니다. (따로 말씀을 못 드렸네요ㅜㅜㅜ)
음, 질문 주신 오류는요, 스크립트 매크로 쓰시다 보면 종종 이런 경우가 생겨요.
Name 프로퍼티나, Type, FileName 등은
신기하게 파이썬으로 옮길 때 소문자로 바뀌거든요ㅜ
VB나 JScript는 대소문자 구분을 안하는데
파이썬은 대소문자를 구분하는 차이 때문에 생기는 오류인가 싶습니다.
하여튼 Name을 name으로 바꾸시면 해결돼요^^;
(대부분 이것과 동일한 오류는 오류가 난 프로퍼티를 찾아서 소문자로 바꾸시면 해결되고요.)
이런 식으로요.
pset = hwp.HParameterSet.HShapeObject
hwp.HAction.GetDefault("TablePropertyDialog", pset.HSet)
pset.HSet.SetItem("ShapeType", 3)
pset.HSet.SetItem("ShapeCellSize", 0)
pset.ShapeTableCell.CellCtrlData.name = field
hwp.HAction.Execute("TablePropertyDialog", pset.HSet)
참고로, pyhwpx 메서드 중에 hwp.SetCurFieldName(셀필드이름)
도 동일한 동작을 해요.
늘 건승하시고,
행복한 하루 되세요^^