엑셀 이미지 자동 삽입 :: xImage 함수 사용법

인터넷 URL 또는 파일 경로에서 이미지를 실시간으로 받아오는 xImage 함수의 사용법 및 전체 명령문을 알아봅니다.

홈페이지 » 엑셀 이미지 자동 삽입 :: xImage 함수 사용법

엑셀 이미지 자동 삽입 :: xImage 명령문 사용법 총정리

엑셀 xImage 명령문 목차 바로가기
요약

엑셀 xImage 함수는 인터넷 또는 특정 파일 경로의 이미지를 실시간으로 삽입하는 사용자 지정 함수입니다.

패치노트
  • 2021.06.03
    : 병합된 셀일 경우, 병합된 셀 크기에 맞춰 이미지가 삽입되도록 명령문을 수정하였습니다.
명령문 구문
= xImage ( URL/파일경로, [여백], [새로고침여부] )
사용된 인수 및 변수 알아보기
인수 설명
URL 또는 파일경로
[Variant]
그림을 불러올 웹 URL 또는 파일 경로입니다. 파일 경로는 폴더경로를 포함한 전체 경로를 입력합니다. 만약 웹 URL 경로 일 경우 URL 주소는 반드시 http:// 또는 https:// 로 시작해야 합니다.
여백
[Long, 선택인수]
그림의 여백을 픽셀단위로 입력합니다. 기본값은 0 (여백 없음) 입니다.
새로고침
[Boolean, 선택인수]
그림 새로고침 여부입니다. TRUE 일 경우 함수가 새로고침 되면, 기존에 삽입 되어있던 그림을 삭제하고 새로운 이미지를 삽입합니다. FALSE일 경우 기존에 삽입되어 있던 그림을 유지합니다. 기본값은 TRUE 입니다.

예제파일 다운로드

오빠두엑셀의 강의 예제파일은 여러분을 위해 자유롭게 제공하고 있습니다.


상세 설명

엑셀 xImage 함수는 인터넷 URL 또는 특정 파일 경로의 이미지를 실시간으로 삽입하는 엑셀 사용자지정 함수입니다. 만약 대상 경로로 인터넷 URL 주소일 경우, URL 주소는 반드시 "http://" 또는 "https://" 로 시작해야 합니다. 예를들어 "www.google.com/image.jpg" 로 "https://" 없이 URL 주소를 입력할 경우 xImage 함수는 결과값으로 #VALUE! 오류를 반환합니다.

엑셀 이미지 삽입 함수 ximage (1)
xImage 함수를 사용하면 인터넷 또는 파일 경로에서 이미지를 실시간으로 받아올 수 있습니다.

만약 xImage 함수로 여러개의 그림을 인터넷에서 동시에 받아올 경우, 그림을 받아오는 동안 엑셀이 잠시 멈추거나 처리속도가 느려질 수 있습니다. 여백을 기본설정(=여백없음)으로 사용하면 삽입된 그림은 셀 크기에 맞춰 자동으로 조절되지만, 여백을 줄 경우 그림 크기를 직접 조절해야 합니다.

홈페이지에서 제공해드리는 xImage 추가기능 함수를 사용하면 파일 확장자 및 파일명 부분일치 여부를 선택하여 더 다양한 환경에서 함수를 사용할 수 있습니다.

실전 사용 예제
  1. 인터넷 URL 경로로 이미지 받아오기
    =xImage("https://www.google.com/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png")
    '구글 로고 이미지를 출력합니다.
  2. 특정 파일 경로의 이미지 삽입하기
    =xImage("C:\Temp\그림.png")
    'C:\Temp\그림.png 경로의 그림을 삽입합니다.
  3. 실행 중인 통합문서와 동일한 경로의 이미지 삽입하기
    =ximage(LEFT(CELL("filename",A1),FIND("\[",CELL("filename",A1)))&"그림.png")
    '실행 중인 통합문서와 동일한 경로에 있는 그림.png 이미지를 삽입합니다. 

엑셀 이미지 자동 삽입, xImage 명령문 동작원리

xImage 명령문 전체 코드
Function xIMAGE(Link, Optional Margin As Long = 0, Optional UpdateImage As Boolean = True)
 
'###############################################################
'오빠두엑셀 VBA 사용자지정함수 (https://www.oppadu.com)
'수정 및 배포 시 출처를 반드시 명시해야 합니다.
 
'■ xIMAGE 함수
'■ 인터넷 URL 또는 특정 파일 경로의 이미지를 삽입합니다.
'■ 사용방법
'=xImage("https://www.google.com/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png")
'■ 인수 설명
'_____________Link                  : 웹 URL 또는 파일 경로입니다. 웹 URL일 경우 링크는 반드시 https:// 또는 http:// 로 시작해야 합니다.
'_____________Margin             : 셀 안에 삽입할 그림에 여백을 줍니다. 픽셀 단위로 입력합니다. 기본값은 0(=여백없음)입니다.
'_____________UpdateImage   : TRUE 일 경우 기존 셀 안에 삽입되어 있던 그림을 삭제하고 새로운 그림으로 갱신합니다. 기본값은 TRUE 입니다.
'###############################################################
 
Dim aRng As Range: Dim aWS As Worksheet
Dim shpImg As Shape
 
On Error Resume Next
 
Set aRng = Application.Caller
Set aWS = aRng.Parent
 
Application.EnableEvents = False
 
If IsEmpty(Link) Then xIMAGE = CVErr(xlValue): Exit Function
 
For Each shpImg In aWS.Shapes
    If shpImg.TopLeftCell.Address = aRng.Address Then
        If UpdateImage = True Then
            shpImg.Delete
        Else
            xIMAGE = True
            GoTo Final
            Exit Function
        End If
    End If
Next
 
Set shpImg = aWS.Shapes.AddPicture(Link, msoFalse, msoTrue, _
aRng.Left + Margin, aRng.Top + Margin, _
aRng.MergeArea.Width - Margin * 2, aRng.MergeArea.Height - Margin * 2)
shpImg.Placement = xlMoveAndSize
 
If shpImg Is Nothing Then
    xIMAGE = CVErr(xlValue)
Else
    xIMAGE = True
End If
 
Final:
Set shpImg = Nothing:    Set aRng = Nothing:    Set aWS = Nothing
Application.EnableEvents = True
 
End Function
명령문 동작원리 단계별 알아보기
  1. xImage 함수에 사용할 변수를 선언하고 설정합니다.
    Dim aRng As Range: Dim aWS As Worksheet
    Dim shpImg As Shape
     
    On Error Resume Next
     
    Set aRng = Application.Caller
    Set aWS = aRng.Parent
  2. 함수의 빠른 동작을 위해 시트 이벤트 동작을 비활성화합니다.
    Application.EnableEvents = False
  3. 파일 경로가 비어있을 경우 #VALUE! 오류 반환 후 명령문을 종료합니다.
    If IsEmpty(Link) Then xIMAGE = CVErr(xlValue): Exit Function
  4. 시트 안에 삽입된 이미지를 하나씩 돌아가며, 기존에 삽입된 이미지가 있는지 확인합니다.
    For Each shpImg In aWS.Shapes
        If shpImg.TopLeftCell.Address = aRng.Address Then
            If UpdateImage = True Then
                shpImg.Delete
            Else
                xIMAGE = True
                GoTo Final
                Exit Function
            End If
        End If
    Next
  5. 경로의 이미지를 삽입합니다.
    Set shpImg = aWS.Shapes.AddPicture(Link, msoFalse, msoTrue, aRng.Left + Margin, aRng.Top + Margin, aRng.Width - Margin * 2, aRng.Height - Margin * 2)
    shpImg.Placement = xlMoveAndSize
  6. 경로에서 받아온 이미지가 없을 경우 #VALUE! 오류 반환 후 명령문을 종료합니다.
    If shpImg Is Nothing Then
        xIMAGE = CVErr(xlValue)
    Else
        xIMAGE = True
    End If
     
    Final:
    Set shpImg = Nothing:    Set aRng = Nothing:    Set aWS = Nothing
    Application.EnableEvents = True
5 2 투표
게시글평점
guest
5 댓글
Inline Feedbacks
모든 댓글 보기
lyb****
lyb****
2021년 5월 29일 11:44 오전
게시글평점 :
     

감사합니다!

ASSTAR
ASSTAR
2021년 5월 30일 12:38 오전
게시글평점 :
     

이미지가 한 칸 셀에서만 잘 작동하고 병합된 셀에서는 약간의 문제를 보입니다.

ASSTAR
ASSTAR
2021년 6월 9일 12:02 오전
게시글평점 :
     

수정된 ximage에서 =ximage("c:오빠두사진폴더/"&b3) 이고 b3가 목록상자 내지는 변하는 값 일때 b3 값이 변경되면 오류 값이 뜸니다.

rozi
rozi
2021년 6월 11일 5:48 오후
게시글평점 :
     

url 불러온 이미지가 파일 실행할 때마다 실행되서 느려지는데 불러온 이미지 엑셀에 포함은 어떻게 하나요?

5
0
여러분의 생각을 댓글로 남겨주세요.x