본문 바로가기
엑셀/VBA

VBA를 활용하여 URL 주소 이미지 다운로드 받는 방법

by 큐브빌드 2023. 2. 27.
반응형

요즘 OPENAI CHAT이 유명해서 저도 한번 사용해 봤는데요.

 

첫 번째 방법은 URLMON을 활용한 DOWNLOAD를 알려주네요.

 

해당 부분은 제가 한번 다룬 적이 있어서 아래 링크 글을 확인해 보시면 될 것 같습니다.

 

https://downupup.tistory.com/entry/urlmon%EC%9D%84-%EC%82%AC%EC%9A%A9%ED%95%9C-%EC%A3%BC%EC%86%8C%EB%A5%BC-%ED%86%B5%ED%95%9C-%ED%8C%8C%EC%9D%BC-%EB%8B%A4%EC%9A%B4%EB%A1%9C%EB%93%9C-VBA

 

url 주소로 파일 다운로드 VBA (urlmon사용)

c# 코드에는 urlmon을 사용한 urldownloadtofile이라는 기능이 있습니다. 그래서 VBA에서도 urlmon.dll을 사용한 urldownloadtofile을 사용할 수 있을 것 같아서 한번 시도해봤습니다. Private Declare PtrSafe Function URL

downupup.tistory.com

openai 채팅과의 내용이 궁금하시면 아래 내용을 펼쳐 보시면 됩니다.

더보기

 

근데 URLDownloadtoFile을 사용할 수 있는 urlmon.dll을 호출을 안 하여 한 번 더 물어봤습니다.

 

저보다 훨씬 잘하네요!!

 

어찌 되었건 아래 방법은 우연히 물어봤는데 참신한 답변을 받아서 작성합니다.

 

영어로 물어봤는데 새로운 답변을 받았습니다.

XMLHTTP를 활용하여 ADODB.Stream을 활용하여 저작하였네요.

 

Sub DownloadImageFromURL()
    Dim url As String
    Dim savePath As String
    
    url = "http://example.com/image.jpg" ' replace with your URL
    savePath = "C:\Users\yourusername\Downloads\image.jpg" ' replace with your desired save path
    
    Dim http As Object
    Set http = CreateObject("MSXML2.XMLHTTP")
    
    ' send an HTTP request to the URL
    http.Open "GET", url, False
    http.Send
    
    ' save the response to a file
    Dim stream As Object
    Set stream = CreateObject("ADODB.Stream")
    stream.Type = 1
    stream.Open
    stream.Write http.responseBody
    stream.SaveToFile savePath, 2 ' 2 = overwrite
    
    ' cleanup
    stream.Close
    Set stream = Nothing
    Set http = Nothing
    
    MsgBox "Image downloaded successfully"
End Sub

URLMON을 사용하여도 위 내용을 사용하건 결과는 동일하기 때문에 뭐 큰 문제는 없네요~!

 

참고하시기 바랍니다~

 

개인적으로 속도는 urldownloadtofile이 조금 더(?) 빠르다고 생각되는데

 

시간 되면 테스트해볼게요~

반응형

댓글