inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

글상자 안의 모든 내용을 본문으로 꺼내기(영상)

미주 지우기 질문입니다.

해결된 질문

355

YongJun(Passion)

작성한 질문수 14

1

1번사진

스크린샷 2024-03-17 135040.png

2번 사진스크린샷 2024-03-17 135111.png일코님 안녕하세요

1번 사진과 같은 내용의 문서에서

일종의 작업이 끝난 뒤에

2번 사진의 역할을 하려합니다..

1번의 누름틀로 select=True를 통해 미주를 제거하려 하였지만 매크로로 이런부분이 제거가 되어야하는데 정상적으로 작동하지 않습니다.

혹시 선택된 영역의 미주를 제거하는 방법이 있을까요?

오토메이션에서 설명해주신 부분
변수로 지정해서 빼보는 것까지 2번 사진에 해보았지만 차도가 없어서 질문드려봅니다

python 한컴오피스

답변 1

1

일코

YongJun님 안녕하세요?

말씀해주신 부분은 delete_ctrl 같은 메서드를 사용해보시면 간편할 것 같습니다.

 

  1. (굳이 누름틀이 아니더라도) 선택 영역 안의 미주를 삭제하는 방법

image

from pyhwpx import Hwp

hwp = Hwp()
hwp.open("your/file/path")

# 필드로 이동(범위 선택)
hwp.move_to_field("1{{0}}", select=True)

# 선택범위 좌표 추출
sel_range = hwp.get_selected_pos()  # (True, 0, 2, 8, 0, 5, 18) 방식 리턴

# 문서 전체 컨트롤 리스트 중 미주
미주리스트 = [i for i in hwp.ctrl_list if i.UserDesc == "미주"]

# 선택범위 안의 미주 삭제
for i in 미주리스트:
    if i.GetAnchorPos(0).Item("Para") in range(sel_range[2], sel_range[5]+1):
        hwp.delete_ctrl(i)

 

시연화면

image

선택영역 안에 여러 개의 미주가 있는 경우라면 역순으로 삭제하시면 됩니다.

 

다른 조건으로 삭제하는 방법이 궁금하시면 댓글 남겨주세요^^

행복한 하루 되세요!!

1

YongJun(Passion)

혹시 pyhwpx를 사용한 내용일까요?

ctrl_list 가 pywin32에서는 어떤 역할인지도 궁금하게되네요

미주 리스트에서 오류가 발생하는거 같아요

감사합니다.

1

일코

ctrl_list는 편의를 위해 내부적으로 만든 프로퍼티입니다.

HeadCtrl부터 LastCtrl까지( 첫 secd와 cold를 제외한)의 리스트를 리턴합니다.

win32의 hwp와 pyhwpx의 hwp는

내부적으로는 같은 클래스를 사용하므로, 혼용하셔도 좋을 듯 합니다.

굳이 비유하자면 matplotlib과 seaborn 같은 관계가 되었으면 좋겠습니다.

 

위 코드를 win32로 구현하시려면

아래처럼 수정하시면 됩니다.

import win32com.client as win32

hwp = win32.gencache.EnsureDispatch("hwpframe.hwpobject")
hwp.XHwpWindows.Item(0).Visible = True
hwp.RegisterModule("FilePathCheckDLL", "FilePathCheckerModule")
hwp.Open("c:\\users\\Administrator\\desktop\\1234.hwp")

hwp.MoveToField("1{{0}}", select=True)

sel_range = hwp.GetSelectedPos()

en_list = []
ctrl = hwp.HeadCtrl
while ctrl:
    if ctrl.UserDesc == "미주":
        en_list.append(ctrl)
    ctrl = ctrl.Next

# 선택범위(문단) 안의 미주 삭제
for i in en_list:
    if i.GetAnchorPos(0).Item("Para") in range(sel_range[2], sel_range[5]+1):
        hwp.DeleteCtrl(i)

 

image

익숙한 걸 쓰는 게 가장 생산적이지만,

pyhwpx의 Hwp() 클래스도

win32 HWPFrame.HwpObject 의 대부분의 기능을 구현해 두었으므로

사용하시는 데 큰 지장이 없을 것입니다.

다양한 편의함수를 만들고 있으니 사용법을 한 번 찾아보셔도 좋을 것 같습니다.

감사합니다.

행복한 하루 되세요^^

 

1

YongJun(Passion)

예전에 작성해두신 좋은 글 있어서 하단에 첨부해 두겠습니다^^

https://employeecoding.tistory.com/347

 Item을 SetItem으로 수정하면 위의 함수도 사용 가능하였어요 ㅎㅎㅎ

섹션7과 같은 수학 수식을 백지에서 시작할 때 어떻게 만들 수 있을까요?

0

76

1

hwp 병렬 작업시 클립보드 충돌문제

0

59

1

본문을 각주로 내리는 법

1

93

1

한글 자동화 삽도 삽입!!

1

385

2

한글 표 내부 위치 찾는 코드좀 알려주세요 ㅠㅠ

1

233

2

빈 문서를 새로 열때는 팝업이 안나오는데 기존 문서를 열면 팝업이 나옵니다

1

120

2

사무실 컴퓨터ㅠ

0

97

2

글자입력 여러번 실행기

0

69

1

현재 커서 문단에 아무런 내용이 없는지 확인하기

1

103

1

특정 스타일을 찾아 이동하는 방법

1

164

2

한/글 파일 open 시 '상위 버전에서...' 메세지 안 뜨게 하는 방법?

1

1119

1

win32com 으로 hwp 문자열 검색하기 문의

1

223

2

[응용] 엑셀문서 값을 필드에 입력하기 질

1

123

1

표 병합하기 관련

0

142

0

메타태그 삽입 자동화

0

191

1

스크립트 매크로 초기화 하고 싶습니다.

1

272

2

한글 창이 여러 개 존재할 때 pyhwpx 모듈로 접근하는 방법을 알고 싶습니다.

1

271

1

표안의 특정 필드에 있는 이미지를 복사하여 한글 외부에 저장하기

1

277

2

스타일 싹 다 지우고 바탕글로 통일하는 방법 문의드립니다.

1

285

0

하위의 여러 폴더 중 특정폴더의 사진만 추출하기

1

346

2

한글 수식을 자동으로 넣는 코드를 만들었는데, 수식 사이의 간격이 계속 벌어집니다.

1

664

1

보유 특허 검색 페이지에서 검색이 되지 않습니다.

1

140

1

hwp 페이지별 분할 저장하는 코드 관련 문의

0

451

0

한글 문서에 사용된 폰트명 추출

1

647

1