인프런 커뮤니티 질문&답변

이탱크님의 프로필 이미지
이탱크

작성한 질문수

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

필드위치로 커서 옮기기

필드위치로 커서 옮기기에서 질문

해결된 질문

작성

·

406

1

여기서 필드위치로 가서 사진을 붙여놓는데요.

그런데 일반적으로 표의 셀이 많을경우 일일이

필드이름을 지정하기 어려울텐데

표를 불러와서

나무사진4라는 이름과 어떠한 폴더안에 나무사진4.JPG가 일치할 경우 나무사진4의 셀 위에 사진을 크기에 맞추어 붙여넣기 하는방법은 없나요??

강의를 진행하다보면 저절로 알 수 있는 부분일까요?

답변 2

1

일코님의 프로필 이미지
일코
지식공유자

이탱크님 안녕하세요?

강의를 진행하면서 알게 된다기보다는,

로직이나 프로세스를 자주 고민하시다 보면 시간이 지나면서 해답을 찾으실 수 있는 케이스라고 생각합니다.

 

아래 코드를 참고해 보시기 바랍니다.

image

BASE_DIR = r"C:\Users\Administrator\Desktop\사진"


def get_text():
    hwp.Run("TableCellBlock")
    hwp.InitScan(Range=0xff)
    _, text = hwp.GetText()
    hwp.ReleaseScan()
    hwp.Run("Cancel")
    return text


hwp.SetPos(2, 0, 0)  # 문서 첫 번째 표 안으로 이동
while True:
    cell_text = get_text()  # 셀의 문자열 추출
    if cell_text:  # 문자열이 있으면
        hwp.HAction.Run("TableUpperCell")  # 위의 셀로 가서
        hwp.InsertPicture(
            os.path.join(BASE_DIR, cell_text + ".jpg"),
            sizeoption=2)  # 셀크기에 맞게 이미지 삽입
        hwp.Run("TableLowerCell")  # 다시 아래 셀로 내려감
    if not hwp.HAction.Run("TableRightCell"):  # 우측으로 이동하고
        break  # 우측 셀이 없으면 while문 종료

1

안녕하세요, 인프런 AI 인턴이에요.

해당 내용은 VBA를 이용해서 구현할 수 있습니다. 아래 코드를 참고해보세요.

Sub InsertPicture()
Dim folderPath As String, fileName As String
Dim myPicture As Picture
Dim myRange As Range

folderPath = "사진이 있는 폴더 경로"
fileName = "나무사진4.JPG" '파일 이름

Set myRange = ActiveSheet.Range("A1:XFD1048576").Find("나무사진4") '키워드를 찾음
If Not myRange Is Nothing Then '찾았을 경우
    Set myPicture = myRange.Parent.Pictures.Insert(folderPath & "\" & fileName) '이미지 삽입
    With myPicture
        .Left = myRange.Left '이미지 위치 조정
        .Top = myRange.Top + myRange.Height + 5
        .Width = myRange.Width
        .Height = myRange.Height
    End With
End If
End Sub

위 코드에서 폴더 경로와 파일 이름을 원하는 값으로 바꾸고, 키워드를 찾을 범위를 지정해주세요.

보시면 알겠지만, VBA를 이용해서 구현하는 부분이기 때문에 강의에서 학습할 수 있는 내용은 아니지만 참고하시면 도움이 되실 거에요!

좋은 결과 얻으시길 바랍니다. 감사합니다.

이탱크님의 프로필 이미지
이탱크

작성한 질문수

질문하기