인프런 커뮤니티 질문&답변

윤병현님의 프로필 이미지
윤병현

작성한 질문수

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

준비작업(템플릿 만들고 필드 추가하기)

셀필드 코드로 수정하기

해결된 질문

작성

·

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(셀필드이름) 도 동일한 동작을 해요.

image

늘 건승하시고,

행복한 하루 되세요^^

 

윤병현님의 프로필 이미지
윤병현

작성한 질문수

질문하기