• 카테고리

    질문 & 답변
  • 세부 분야

    업무 자동화

  • 해결 여부

    해결됨

사진 자동화 문의입니다.

23.04.23 17:48 작성 조회수 743

1

제가 강사님의 블로그를 보고 만들었습니다.

제가 생각하는 방법은 표의 이름을 사진의 이름과 일치시켜서 표에 넣으려고 했는데 오류가 나네여

import win32com.client as win32
import pandas as pd
import numpy as np
import os
import pyautogui
from tkinter import Tk
from tkinter.filedialog import askopenfilenames

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

file_list = os.listdir("e:/python22/inflearn_hangeul/img")

root = Tk()  # 이미지선택창 열기
imagelist = askopenfilenames()
root.destroy()  # 이미지선택창 닫기

BASE_DIR = imagelist[0].rsplit("/", maxsplit=1)[0]  # 이미지리스트에서 경로 추출
imagelist = [i.rsplit("/", maxsplit=1)[1] for i in imagelist]  # 이미지리스트에서 파일명만 남김
print(imagelist)

표_리스트 = list(set([i.split(".")[0] for i in imagelist]))
표_리스트.sort()
print(표_리스트)

hwp = 한글_시작()
hwp.Open("e:/python22/inflearn_hangeul/사업개요서_그림작성자동화서식.hwp")
hwp.Run("CopyPage")
for _ in range(9):
    hwp.Run("PastePage")

for idx, content in enumerate(표_리스트):
    hwp.HAction.GetDefault("TablePropertyDialog", hwp.HParameterSet.HShapeObject.HSet)
    hwp.HParameterSet.HShapeObject.ShapeTableCell.Editable = 1
    hwp.HParameterSet.HShapeObject.ShapeTableCell.CellCtrlData.name = content
    print(content)
    hwp.HAction.Execute("TablePropertyDialog", hwp.HParameterSet.HShapeObject.HSet)

for j, content in enumerate(표_리스트):
    hwp.MoveToField(content)  # 해당 필드로 이동
    hwp.InsertPicture(os.path.join(BASE_DIR, f"{content}.png"), Embedded=True,
                          sizeoption=2)  # 이미지 삽입

40번째 줄에서 오류가 나구요

pywintypes.com_error: (-2147417851, '서버에서 예외 오류가 발생했습니다.', None, None)

 

답변 1

답변을 작성해보세요.

1

for idx, content in enumerate(표_리스트):
    hwp.HAction.GetDefault("TablePropertyDialog", hwp.HParameterSet.HShapeObject.HSet)
    hwp.HParameterSet.HShapeObject.ShapeTableCell.Editable = 1
    hwp.HParameterSet.HShapeObject.ShapeTableCell.CellCtrlData.name = content
    print(content)
    hwp.HAction.Execute("TablePropertyDialog", hwp.HParameterSet.HShapeObject.HSet)

위 코드를 아래처럼 바꿔보시기 바랍니다^^

for idx, content in enumerate(표_리스트):
    shape_object = hwp.HParameterSet.HShapeObject
    hwp.HAction.GetDefault("TablePropertyDialog", shape_object.HSet)
    shape_object.ShapeTableCell.Editable = 1
    shape_object.ShapeTableCell.CellCtrlData.name = content
    print(content)
    hwp.HAction.Execute("TablePropertyDialog", shape_object.HSet)
채널톡 아이콘