Я хочу загрузить изображение из Интернета и попытался использовать API URLDownloadToFile следующим образом.
#If VBA7 Then
Private Declare Function URLDownloadToFile Lib "urlmon" _
Alias "URLDownloadToFileA" ( _
ByVal pCaller As LongPtr, _
ByVal szURL As String, _
ByVal szFileName As String, _
ByVal dwReserved As LongPtr, _
ByVal lpfnCB As LongPtr) _
As Long
#Else
Private Declare Function URLDownloadToFile Lib "urlmon" _
Alias "URLDownloadToFileA" ( _
ByVal pCaller As Long, _
ByVal szURL As String, _
ByVal szFileName As String, _
ByVal dwReserved As Long, _
ByVal lpfnCB As Long) _
As Long
#End If
Private Sub TestDownload()
Dim Source As String, Target As String
Dim Ret As Long
Source = "//cdnparap40.paragonrels.com/ParagonImages/Property/P4/JONESBORO/10077581/0/120/90/" & _
"f645b5257c6ae2f13147ec57c315f9f4/1/acd2b86d15f1087ed3462f2ba4ebb733/10077581.JPG"
Target = "H:\Temp\FileName.jpg"
Ret = URLDownloadToFile(0, Source, Ffn, 0, 0)
End Sub
Целевой каталог существует, но код не дает результата (Ret = 0). Однако я не знаю причину, поскольку в коде нет ошибок.
Интернет-адрес правильный. Я могу просматривать изображение и его открытое для публики. Однако я не уверен, что загрузка разрешена.
Я не знаю, нужна ли конкретная ссылка на Urlmon.dll. Я попытался загрузить его, но VBA (Excel 2010) отказался: «не могу добавить ссылку на указанную библиотеку).
VBA7 = Правда на моей машине. Я изменил 3 Long объявления на LongPtr, но я не знаю, что это требуется (для всех трех). До того, как я попробовал тот же код с длинными объявлениями без лучшего результата.
И последнее, что не менее важно, я не уверен, что URLDownloadToFileA - это API, используемый для этой цели с этой конкретной структурой URL. Возможно, есть еще более простое решение.
Любое руководство приветствуется, решение было бы великолепным. Спасибо.