2021. 9. 1. 09:46

[Excel-VBA] URL에 해당하는 이미지 자동으로 읽어오는 함수

어디선가 줒어온 소스;;;

urlCol 이랑 대상 컬럼, 시작Row, 대상 컬럼 정도만 맞추고 한번 슥 돌려주면 알아서 읽어옴

' 귀찮아서 인터넷에서 긁어옴
Sub getPictureFromURL()

Dim URL As String '이미지 URL 처리용 변수
Dim r As Long '작업중인 행
Dim urlCol As Integer ' URL이 들어있는 컬럼 번호
Dim targetCol As Integer ' 그림을 넣은 target 컬럼 번호

urlCol = 3
targetCol = 4

' 처음 1행은 헤더가 있기 때문에 2번째 row부터 시작
r = 2
Do
    URL = Cells(r, urlCol).Value  '각 셀의 값을 URL에 변수에 넣음
    On Error Resume Next '에러 발생해도 다음코드 진행
    ActiveSheet.Pictures.Insert(URL).Select 'URL 주소에 있는 각 그림을 삽입함
    
    If Err <> 0 Then '만약 무언가 오류가 발견되면, 그냥 무시하고 다음 항목으로 넘어간다
        Err.Clear 
        On Error GoTo 0
        GoTo errHandler
    End If
    
    With Selection '선택된 그림에서 작업
        .ShapeRange.LockAspectRatio = msoTrue '가로세로 비율고정(false면 해제)
        .Left = Cells(r, targetCol).Left + 2  '사진 왼쪽위치
        .Top = Cells(r, targetCol).Top + 2  '사진 윗쪽 위치
        .Height = Cells(r, targetCol).Height - 4  '사진 높이
        .Width = Cells(r, targetCol).Width - 4  '사진 너비
    End With
    
errHandler:
    
    r = r + 1 ' 다음행 데이터를 확인
Loop Until Cells(r, urlCol) = vbNullString
' URL 값이 공백을 만나면 종료
End Sub
2012. 1. 5. 15:58

Image나 PictureBox에 URL로 이미지 로딩하기

' 아래의 함수를 사용하면 가능

' image1.picture = loadwebpicture("url") 
' 별도의 모듈에 선언해 넣을것
' 출처는 
http://www.devpia.com/Maeul/Contents/Detail.aspx?BoardID=48&MAEULNO=19&no=3692&page=2 
' 여기 데브피아에 회원정보를 까먹어서 감사하다는 인사를 못드림..ㅠㅠ OTL

Private Type TGUID
    Data1 As Long
    Data2 As Integer
    Data3 As Integer
    Data4(0 To 7) As Byte
End Type
Private Declare Function OleLoadPicturePath Lib "oleaut32.dll" (ByVal szURLorPath As Long, ByVal punkCaller As Long, ByVal dwReserved As Long, ByVal clrReserved As OLE_COLOR, ByRef riid As TGUID, ByRef ppvRet As IPicture) As Long

Public Function LoadWebPicture(ByVal strFileName As String) As Picture
Dim IID  As TGUID
    With IID
        .Data1 = &H7BF80980
        .Data2 = &HBF32
        .Data3 = &H101A
        .Data4(0) = &H8B
        .Data4(1) = &HBB
        .Data4(2) = &H0
        .Data4(3) = &HAA
        .Data4(4) = &H0
        .Data4(5) = &H30
        .Data4(6) = &HC
        .Data4(7) = &HAB
    End With
On Error GoTo ERR_LINE
    OleLoadPicturePath StrPtr(strFileName), 0&, 0&, 0&, IID, LoadWebPicture
    Exit Function
ERR_LINE:
    Set LoadWebPicture = VB.LoadPicture(strFileName)
End Function