메뉴

xImage

Function

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

xImage 코드 미리보기
구문 = xImage ( URL/파일경로, [여백], [새로고침여부] )
인수구분 형식 설명
URL 또는 파일경로 필수 Variant
그림을 불러올 웹 URL 또는 파일 경로입니다.
파일 경로는 폴더경로를 포함한 전체 경로를 입력하며, 웹 URL 경로일 경우 URL 주소는 반드시 http:// 또는 https:// 로 시작해야 합니다.
여백 선택 Long
그림의 여백을 픽셀단위로 입력합니다. 기본값은 0(여백 없음) 입니다.
새로고침 선택 Boolean
그림 새로고침 여부입니다. 기본값은 TRUE 입니다.
TRUE 일 경우 함수가 새로고침 되면 기존에 삽입되어 있던 그림을 삭제하고 새로운 이미지를 삽입하며, FALSE 일 경우 기존에 삽입되어 있던 그림을 유지합니다.

마스터 코드

복사한 코드는 VBA 편집기(Alt + F11) 새 모듈에 붙여넣어 사용하세요
Module1 · 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

활용 예제

인터넷 URL 경로로 이미지 받아오기
=xImage("https://www.google.com/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png")
'구글 로고 이미지를 출력합니다.
특정 파일 경로의 이미지 삽입하기
=xImage("C:\Temp\그림.png")
'C:\Temp\그림.png 경로의 그림을 삽입합니다.

안내사항

웹 URL 주소는 반드시 http:// 또는 https:// 로 시작해야 하며, 그렇지 않으면 #VALUE! 오류를 반환합니다.
여러 개의 그림을 인터넷에서 동시에 받아올 경우 그림을 받아오는 동안 엑셀이 잠시 멈추거나 처리속도가 느려질 수 있습니다.
여백을 기본값(여백 없음)으로 두면 그림이 셀 크기에 맞춰 자동 조절되지만, 여백을 지정하면 그림 크기를 직접 조절해야 합니다.
댓글 58
5 (34개 평가)
lyb****
lyb**** 2021.05.29 11:44
감사합니다!
ASSTAR
ASSTAR 2021.05.30 00:38
이미지가 한 칸 셀에서만 잘 작동하고 병합된 셀에서는 약간의 문제를 보입니다.
오빠두엑셀
오빠두엑셀 작성자 2021.06.03 22:32
안녕하세요.
Width 와 Height 속성을 줄 때,
MergeArea에서 값을 받오도록 명령문을 수정하였습니다.
확인해 주셔서 감사드립니다.
ASSTAR
ASSTAR 2021.06.09 00:02
수정된 ximage에서 =ximage("c:오빠두사진폴더/"&b3) 이고 b3가 목록상자 내지는 변하는 값 일때 b3 값이 변경되면 오류 값이 뜸니다.
rozi
rozi 2021.06.11 17:48
url 불러온 이미지가 파일 실행할 때마다 실행되서 느려지는데 불러온 이미지 엑셀에 포함은 어떻게 하나요?
김도훈0128
김도훈0128 2021.06.25 21:42
너무 유용한 정보입니다.
감사합니다!!
행운덩어리
행운덩어리 2021.07.04 22:12
저만 안 되는건가요? 컴파일 오류라고 뜨네요 ㅠㅠ
페네트
페네트 2021.07.05 06:58
감사합니다.
SEANPAUL
SEANPAUL 2021.07.12 06:05
감사합니다
전지적참견종점
전지적참견종점 2021.07.12 10:34
감사합니다
김태훈
김태훈 2021.07.22 18:43
안녕하세요, 혹시 회사 공유서버가 \\192.1XX.0.XX\ 이런식으로 시작하는데,
IMAGELOOKUP을 쓸때는 문제가 없었는데, XIMAGE를 쓸때는 공유폴더에 있는 파일들은 안뜨네요?ㅜ

방법이 없겠죠..?
오빠두엑셀
오빠두엑셀 작성자 2021.07.23 10:13
안녕하세요.
혹시 홈페이지에 올려드린 추가기능 함수로도 사용해보셨나요?
지져스
지져스 2021.07.23 11:23
아 잘되네요 ㅜㅜ 감사합니다 !
스크랩 완료