엑셀 vba 매크로 hwpctrl 줄간격 적용방법 문의

엑셀에서 hwpctrl을 사용하여 오토메이션을 진행하고 있습니다.
아래와 같이 코드를 작성하였을때 한글문서 전체에 줄간격 160%가 적용되어야 하는데
실제로는 500%가 넘는 말도안되는 줄간격이 반영됩니다.
실험을 해보니 줄간격값 10을 기준으로 이보다 작으면 0, 이보다 크면 말도안되는 값이 반영되는데
혹시 이유를 알 수 있을까요

다음은 제가 사용하는 엑셀 vba 코드입니다.
줄간격 적용을 제외한 다른 기능들은 잘 반영되고 있습니다.

  • 변수선언내용
    Dim HwpCtrl1 As HwpCtrl
    Dim vAct As HWPCONTROLLib.HwpAction
    Dim vSet As HWPCONTROLLib.HwpParameterSet

          HwpCtrl1.Run ("SelectAll")
          Set vAct = HwpCtrl1.CreateAction("ParagraphShape")
          Set vSet = HwpCtrl1.CreateSet("ParaShape")
          vAct.GetDefault vSet
          vSet.SetItem "LineSpacingMethod", "Percent"
          vSet.SetItem "LineSpacing", 160
          vAct.Execute vSet
    
1개의 좋아요

안녕하세요.

한글컨트롤을 문의 주신 것 같은데요.
어떤 용도로 한글컨트롤을 통해 자동화 개발을 하시는지는 모르겠으나
한글컨트롤을 지원 종료되어 기술지원을 받기 어려우니 한글오토메이션이나 한글SDK로 대체 개발을 하시기를 권장드립니다.

일단은 문의 주신 내용만 답변을 드리자면
ParaShape의 인자 설정값이 잘못된 것 같습니다.

“LineSpacingMethod” 인자는 없고,
"LineSpacingType"을 잘못 알고 사용하신 것 같고 해당 인자는 “Percent” 문자열 인자를 받지 않고 정수형으로 받음

C++으로 한글오토메이션 예제를 작성하자면 아래와 같음

CDHwpAction act = hwp.CreateAction("ParagraphShape");
CDHwpParameterSet set = act.CreateSet();

// 0 : 글자에 따라, 1 : 고정 값, 2 : 여백만 지정
set.SetItem("LineSpacingType", 0);
set.SetItem("LineSpacing", 160);

act.Execute(set);

감사합니다.

1개의 좋아요

인자를 잘못 사용했었군요 ㅜ 답변 감사드립니다!

1개의 좋아요