엑셀

엑셀(EXCEL) VBA를 사용해서 인터넷(URL)에서 그림 불러오기(파일을 오픈할 때 연결해서 그림 출력하기)

toast-story 2024. 5. 27. 21:36
728x90

엑셀을 열 때 기존 이미지를 삭제하고 특정 URL에서 이미지를 불러와 B2 셀 위에 250 x 250 크기로 출력하는 VBA 코드를 작성해 보겠습니다. 이 코드는 기존 이미지를 확인하고 삭제한 후 새로운 이미지를 삽입하는 작업을 수행합니다.

 

엑셀을 오픈할 때마다 특정한 주소(URL)에 접근하여 이미지를 불러오는 소스를 작성하려고합니다.

오픈시 Sheet1에 들어가서 B2열에 들어가야 하며 크기는 250 x 250으로 합니다.

또 기존에 이미지가 이미 있다면 삭제하고 새로운 이미지로 삽입하게 합니다.

 

먼저 시트에 오른쪽 클릭을 하고 소스보기로 이동을 합니다.

 

소스 열기

 

<소스 코드>

 

Private Sub Workbook_Open() '엑셀을 오픈하면 실행됩니다.

    Dim imageURL As String
    Dim pic As Picture
    Dim Cell_R As Range
    Dim image_option As Shape
    
    ' 이미지 URL 지정
    imageURL = "https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdfMo7n%2FbtrYAmRpxu5%2FZv87q5pyKmytorznEc6OI1%2Fimg.png" 
    '원하는 이미지의 URL을 입력합니다.
    
    ' B2 셀을 지정
    Set Cell_R = ThisWorkbook.Worksheets("sheet1").Range("B2")
    
    ' Cell_R = B2 셀 위에 이미지가 있는지 검사하고 삭제합니다.
    On Error Resume Next
    For Each image_option In ThisWorkbook.Worksheets("sheet1").Shapes
        If Not Intersect(image_option.TopLeftCell, Cell_R) Is Nothing Then
            image_option.Delete
        End If
    Next image_option
    On Error GoTo 0
    
    'URL에 연결되지 않거나 이상이 있으면 에러코드로 연결됩니다.
    On Error GoTo ErrorHandler
    
    ' 이미지 주소에 접근하여 삽입합니다.
    Set pic = ThisWorkbook.Worksheets("sheet1").Pictures.Insert(imageURL)
    pic.ShapeRange.LockAspectRatio = msoFalse
    pic.Left = Cell_R.Left
    pic.Top = Cell_R.Top
    pic.Width = 250 ' 너비를 250 px 사이즈로 조정합니다.
    pic.Height = 250 ' 높이를 250 px 사이즈로 조정합니다.
    
    Exit Sub

ErrorHandler:
    MsgBox "이미지를 삽입하는 도중 오류가 발생했습니다. URL을 확인하세요.", vbCritical
End Sub

 

 

  • 처음 Workbook_Open을 선언하여 이 코드가 엑셀 파일이 열릴 때 자동으로 실행되게 합니다.
  • imageURL : 실제 사용할 URL을 선택합니다. 연결에 제한이 없는 정보를 선택해야 합니다.
  • Cell_R : 이미지가 올라갈 셀입니다. 이번에는 B2를 사용했습니다.
  • For Each shp In ThisWorkbook.Worksheets("sheet1").Shapes : 도형(Shape)을 반복하면서 Cell_R에 이미 이미지가 있으면 삭제합니다.
  • pic.Left / pic.Top : Cell_R의 이미지를 배치합니다.
  • pic.Width / pic.Height : 이미지의 크기를 250 x 250으로 고정합니다.
  • ErrorHandler : URL이 유효하지 않거나 이미지를 불러오지 못할 경우 오류 메시지를 표시합니다.

 

엑셀 파일은 ".xlms" 확장자로 저장해야 합니다.

제가 테스트 할때는 굉장히 잘 실행되는데 항상 VBA는 실행환경에 따라 다릅니다.

하지만 이 코드의 경우에는 딱히 실행환경을 탈 것 같지는 않습니다.

 

실행하기

 

반응형