🤍 전 강의 25% 할인 중 🤍

2024년 상반기를 돌아보고 하반기에도 함께 성장해요!
인프런이 준비한 25% 할인 받으러 가기 >>

  • 카테고리

    질문 & 답변
  • 세부 분야

    업무 자동화

  • 해결 여부

    해결됨

12강 한글복사

23.03.29 10:56 작성 23.03.29 11:01 수정 조회수 725

1

hwp.Run("CopyPage")

row = 2

while True:

if not ws.Cells(row, 1).Value:

hwp.Run("DeletePage")

break

else:

data = list(

ws.Range(ws.Cells(row,1),

ws.Cells(row, 4)).Value[0]

)

data[2] = data[2].strftime("%Y년 %#m월 %#d일")

필드삽입(row-2, data)

hwp.Run("PastePage")

row += 1

 

전체 카피가 되지 않고 하나의 파일만 복사되어 엑셀첫번째 열 파일만 생성됩니다.

답변 3

·

답변을 작성해보세요.

1

네. 이제 실행됩니다. 감사합니다~

잘 된다니 다행이네요^^

직접 호산님의 업무에 활용하실 때
문법이나 명령어 종류 때문에 막히실 때
언제든 질문 남겨주세요.

구현에 도움 드리겠습니다.

행복한 하루 되세요^^

1

2010입니다

2014 이하 버전에서는 아쉽게도 CopyPage나 PastePage 명령어가 존재하지 않습니다.

다소 번거롭지만 아래 코드를 복붙하여 다시 테스트해봐주시기 바랍니다ㅎ

설명은 간단히 주석으로 붙여놓았습니다^^

# 모듈 임포트
import win32com.client as win32

FILENAME = r"C:\Users\Administrator\Desktop\누름틀필드.hwp"

def 한글시작():
    hwp = win32.gencache.EnsureDispatch("hwpframe.hwpobject")
    hwp.XHwpWindows.Item(0).Visible = True
    hwp.RegisterModule("FilePathCheckDLL", "FilePathCheckerModule")
    return hwp


def 엑셀시작():
    excel = win32.gencache.EnsureDispatch("Excel.Application")
    excel.Visible = True
    wb = excel.Workbooks.Open(r"C:\Users\Administrator\Desktop\취미.xlsx")
    ws = wb.Worksheets(1)
    return excel, wb, ws


def 필드삽입(index, value):
    """
    필드삽입 함수 정의
    """
    field_list = ["이름", "성별", "생일", "취미"]
    for idx, field in enumerate(field_list):
        hwp.PutFieldText(f"{field}{{{{{index}}}}}", value[idx])


def 쪽붙이기(file):
    """
    PastePage 액션 대신 정의한 함수(한/글 2014 이하 버전용)
    """
    hwp.HAction.GetDefault("InsertFile", hwp.HParameterSet.HInsertFile.HSet)
    hwp.HParameterSet.HInsertFile.filename = file
    hwp.HAction.Execute("InsertFile", hwp.HParameterSet.HInsertFile.HSet)


if __name__ == '__main__':
    hwp = 한글시작()
    excel, wb, ws = 엑셀시작()
    
    # 엑셀에서 데이터 가져오기
    data = [list(i) for i in ws.UsedRange()[1:]]  # 제목 행은 제외
    
    # 누름틀페이지 복사하기
    for i in range(len(data)):
        쪽붙이기(FILENAME)  # 페이지 끼워넣기
        hwp.HAction.Run("BreakPage")  # 쪽 나누기
        hwp.HAction.Run("MoveDocBegin")  # 문서 처음으로 이동
    hwp.Run("Delete")  # 빈 페이지 삭제
    hwp.Run("Delete")  # 빈 줄바꿈 삭제
    
    for idx, row in enumerate(data):  # enumerate함수는 for문 안에서 data의 인덱스와 요소를 동시에 가져올 수 있음
        row[2] = row[2].strftime("%Y년 %#m월 %#d일")  # 먼저 날짜 형식을 "1964년 2월 2일" 방식으로 변환
        필드삽입(idx, row)  # idx번째 페이지 누름틀에 row의 데이터를 삽입

image

1

혹시 어떤 버전의 아래아한글을 사용하고 계세요?^^

채널톡 아이콘