메뉴
실무 위키VBA 코드InsertWebImage

InsertWebImage

Sub

웹에 있는 이미지를 URL 주소로 셀 위에 삽입하는 VBA 명령문입니다.

InsertWebImage 코드 미리보기
구문 InsertWebImage 셀, URL링크, [너비], [높이]
인수구분 형식 설명
필수 Range
웹 이미지를 삽입할 셀입니다.
URL링크 필수 String
웹 이미지의 URL 주소입니다.
너비 선택 Double
이미지의 너비를 point 단위로 지정합니다. 기본값은 셀의 너비입니다.
높이 선택 Double
이미지의 높이를 point 단위로 지정합니다. 기본값은 셀의 높이입니다.

마스터 코드

복사한 코드는 VBA 편집기(Alt + F11) 새 모듈에 붙여넣어 사용하세요
Module1 · InsertWebImage
Sub InsertWebImage(targetRng As Range, ImgLink As String, Optional imgWidth As Double, Optional imgHeight As Double)
'###############################################################
'오빠두엑셀 VBA 사용자지정함수 (https://www.oppadu.com)
'▶ InsertWebImage 함수
'▶ 웹 이미지를 셀 위에 삽입합니다.
'▶ 인수 설명
'_____________targetRng : 이미지를 삽입할 셀입니다.
'_____________imgLink : 삽입할 이미지 링크입니다.
'_____________imgWidth : 이미지 너비입니다. 기본값은 셀의 너비입니다. (선택인수)
'_____________imgHeight : 이미지 높이입니다. 기본값은 셀의 높이입니다. (선택인수)
'▶ 사용 예제
'InsertWebImage sheet1.Range("A1"),"https://www.google.com/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png"
'###############################################################
Dim WS As Worksheet
Dim shp As Shape
Dim W As Double: Dim H As Double
Set WS = targetRng.Parent
If imgWidth > 0 Then W = imgWidth Else W = targetRng.Width - 6
If imgHeight > 0 Then H = imgHeight Else H = targetRng.Height - 6
Set shp = WS.Shapes.AddPicture(ImgLink, msoFalse, msoTrue, targetRng.Left + 3, targetRng.Top + 3, W, H)
End Sub

활용 예제

특정 URL 이미지를 A1 셀에 삽입
InsertWebImage Sheet1.Range("A1"),"https://www.google.com/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png"
' 구글 로고 이미지를 A1셀에 삽입합니다.
가로너비·세로높이를 지정하여 삽입
InsertWebImage Sheet1.Range("A1"),"https://www.google.com/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png",100,100
' 구글 로고 이미지를 가로/세로 100point의 정사각형으로 삽입합니다.
댓글 14
4 (5개 평가)
신호등
신호등 2022.05.12 14:44
어떻게 쓰는건가요?
웹 트롤링
웹 트롤링 2022.12.22 12:09
이미지 넣는거까진 했는데 여기다 하이퍼링크도 달수있는 방법 이 있나요??
오빠두엑셀
오빠두엑셀 작성자 2022.12.27 16:52
안녕하세요.
네 가능합니다.
아래와 같이 코드를 사용해보세요.
With ActiveSheet
.Hyperlinks.Add Anchor:=.Shapes("그림명"), Address:="링크"
End With
https://stackoverflow.com/questions/43466649/vba-add-hyperlink-to-a-picture
자세한 내용은 위 링크를 참고해보세요.
웹 트롤링
웹 트롤링 2022.12.28 15:42
친절한 설명 감사합니다.

Sub InsertWebImage(targetRng As Range, ImgLink As String, Optional imgWidth As Double, Optional imgHeight As Double)
여기구문에 넣는건가요? 아니면 본문 구문
InsertWebImage Sheet1.Range("B4"), A
이 밑에 넣는건가요?
오빠두엑셀
오빠두엑셀 작성자 2022.12.28 20:47
안녕하세요.
만약 기존 코드에 그대로 사용하려면
Set shp = ... 코드 밑에 작성하면 됩니다.
With ActiveSheet
.Hyperlinks.Add Anchor:=.Shapes(shp.Name), Address:="링크"
End With
를 추가해보세요.
링크를 동적으로 바꾸는건 상황에따라 다르기 때문에 방법은 직접 모색하셔야 합니다.
웹 트롤링
웹 트롤링 2022.12.29 11:28
오 그러면 한열에 링크를 넣고 가려놓은다음에
With ActiveSheet
.Hyperlinks.Add Anchor:=.Shapes(shp.Name), Address:=Range("A1")
End With

음... 이렇게... 가능할까요?
오빠두엑셀
오빠두엑셀 작성자 2022.12.30 19:26
네 가능합니다.
With ActiveSheet
.Hyperlinks.Add Anchor:=.Shapes(shp.Name), Address:=.Range("A1").Value
End With
이렇게 사용해보세요.
웹 트롤링
웹 트롤링 2022.12.31 17:34
친절한 설명 감사합니다. 웹 크롤링 입문한지 한달 안됬는데 너무 재미있네요
원조백수
원조백수 2023.04.22 13:41
If IsMissing(imgWidth) > 0 Then W = imgWidth Else W = targetRng.Width - 6
If IsMissing(imgHeight) > 0 Then H = imgHeight Else H = targetRng.Height - 6
IF 문에서 이미지 크기를 지정하면 이미지 크기를 쓰고 없으면 셀 크기를 쓰는 의도로 보이는데, 내용은 반대로 되어 있습니다.
Optional imgWidth As Double 과 같이 Double로 형식지정을 하셨기 때문에 값이 기본값으로 0이 설정되어 버려서 IsMissing(imgWidth)은 인수를 지정하지 않아도 항상 False가 됩니다.
즉, 위의 코드로는 이미지 크기를 지정하든 지정하지 않든 모두 셀 크기에 따르게 됩니다.
오빠두엑셀
오빠두엑셀 작성자 2023.04.24 12:08
안녕하세요.
네 확인해보니 IsMissing과 >0 이 같이 사용되어있어 방금 수정하였습니다!
말씀하신대로 IsMissing은 빼고 사용하는 것이 맞습니다. 확인해주셔서 감사합니다.
원조백수
원조백수 2023.04.24 13:26
그러시다면, 본문의 설명 부분도 수정을 해주시면 좋겠습니다.
부린이쥬
부린이쥬 2023.05.28 21:32
안녕하세요. 리스트리를 사용하여 네이버쇼핑 크롤링 후 데이터를 만들었습니다. 또 재고관리 솔루션 보면서 그 데이터를 활용하는 프로그램을 만들며 따라하고 있습니다. 상세한 설명 정말 감사드립니다. 그런데, VBA 폼에 이미지를 나타내게 하는 방법은 없을까요? 이미지 웹 url은 데이터에 포함되어 있어서 활용하고 싶은데, insertWebImage 함수랑 xImage 함수 모두 셀에 삽입하는 것 같아서 적용이 힘드네요. ㅠㅠ 조언 부탁드립니다.
20230528_213207
오빠두엑셀
오빠두엑셀 작성자 2023.06.05 19:50
안녕하세요.
VBA 폼에 이미지를 출력할 수 있습니다.
여러가지 방법이 있으나, 가장 확실한 방법은 URL 이미지를 PC에 다운받은 후, 다운받은 이미지를 출력하면 됩니다.
아래 코드는 ChatGPT를 통해 얻은 코드이며, 적절히 수정 후 사용해보시길 바랍니다.
Sub DownloadAndShowImage()

Dim myURL As String
Dim http As Object
Dim imgPath As String

' Define the URL of the image
myURL = "http://example.com/yourimage.jpg" ' replace with your URL

' Path to save the image
imgPath = Environ("TEMP") & "\temp_img.jpg" ' Replace with your path

' Create an XMLHTTP object
Set http = CreateObject("MSXML2.XMLHTTP")

' Initialize the XMLHTTP object
With http
.Open "GET", myURL, False
.send
End With

' Write the stream of the XMLHTTP object to a file
Dim bs As Object
Set bs = CreateObject("ADODB.Stream")
With bs
.Type = 1 ' Binary
.Open
.write http.responseBody
.savetofile imgPath, 2 ' Overwrite
.Close
End With

' Load image to UserForm
Load UserForm1
UserForm1.Image1.Picture = LoadPicture(imgPath)
UserForm1.Show

' Clean up
Set http = Nothing
Set bs = Nothing
End Sub
강민준🤗
강민준🤗 2024.08.11 12:30
좋은 자료 감사합니다.🙇‍♂️
스크랩 완료