본문 바로가기
아래아한글 자동화/python+hwp 중급

[QnA] 표 내의 일부 테두리를 점선으로 바꾸는 법

by 일코 2022. 5. 13.

 

솔직히 저도 모든 파라미터셋을 외우는 게 아니어서, 이런 질문을 받으면 직접 실행해봅니다.

아래와 같은 과정으로요.

같이 한 번 해 봅시다.

1. 파이썬으로 한/글을 연다.
2. 스크립트매크로를 녹화해본다.
3. 파이썬 코드로 변환한 후 실행해본다.
4. 되면 끝. 안되면?
5. 액션과 파라미터셋을 검색해서 답을 찾는다. (오래 걸림ㅜ)

1. 파이썬으로 한/글 열기

import win32com.client as win32
hwp = win32.gencache.EnsureDispatch("hwpframe.hwpobject")
hwp.XHwpWindows.Item(0).Visible = True

2. 스크립트 매크로 녹화를 누른 후 테두리를 점선으로 바꿔본다.

표를 하나 생성해보고, 원하는 셀선택한 시점 이후로 녹화를 눌렀다.

녹화된 매크로 코드는,

function OnScriptMacro_()
{
	HAction.GetDefault("CellBorder", HParameterSet.HCellBorderFill.HSet);
	with (HParameterSet.HCellBorderFill)
	{
		BorderTypeBottom = HwpLineType("Dash");
		BorderTypeTop = HwpLineType("Dash");
		BorderTypeRight = HwpLineType("Dash");
		BorderTypeLeft = HwpLineType("Dash");
	}
	HAction.Execute("CellBorder", HParameterSet.HCellBorderFill.HSet);
	HAction.Run("Cancel");

 

3. 파이썬 코드로 변환해본다.

변환방법은, 아주 한꼬집의 파이썬 문법지식이 필요하기는 하다.

hwp.HAction.GetDefault("CellBorder", hwp.HParameterSet.HCellBorderFill.HSet)
hwp.HParameterSet.HCellBorderFill.BorderTypeBottom = hwp.HwpLineType("Dash")
hwp.HParameterSet.HCellBorderFill.BorderTypeTop = hwp.HwpLineType("Dash")
hwp.HParameterSet.HCellBorderFill.BorderTypeRight = hwp.HwpLineType("Dash")
hwp.HParameterSet.HCellBorderFill.BorderTypeLeft = hwp.HwpLineType("Dash")
hwp.HAction.Execute("CellBorder", hwp.HParameterSet.HCellBorderFill.HSet)
hwp.HAction.Run("Cancel")

 

4. 실행해본다.

 

다행히 잘 되네요.

위 코드를 참고하시면 되겠습니다.

참고로, 셀을 선택(F5)하는 코드는

hwp.HAction.Run("TableCellBlock")

입니다.

 

참고로, 원하는 셀까지 찾아가는 방법도 여러 가지가 있는데

순전히 개인적으로는 컨트롤을 활용하는 방법보다는 필드를 등록해놓고 쓰는 방법을 선호하는 편입니다.

다만 동적으로 표를 생성하고, 새로 생성되는 표의 테두리를 고쳐야 한다면

hwp.LastCtrl에서부터 탐색해 가시는 걸 추천드립니다.

 

답변이 도움이 되었길 바랍니다.

행복한 하루 되세요!

댓글