У меня тоже недавно стал похожий вопрос о загрузке БИК с сайта, наверно есть куча компонент кроме Microsoft Internet Transfer Control 6.0. Но обойтись можно стандартной wininet.dll и VBA из этой библиотеки вызываются две функции: InternetOpen и InternetOpenUrl. Привожу свой рабочий код который записан макросом в книге екселя. Этот макрос запускается из нава и все работает на 100%, кстате на самом листе екселя оч удобно хранить настройки (прокси, URL, путь для сохранения).
hInternetSession=InternetOpen("DownloadApp", INTERNET_OPEN_TYPE_PROXY, Range("B3"),vbNullString,0)
hURLFile = InternetOpenUrl(hInternetSession, Range("B1"), vbNullString, 0, INTERNET_FLAG_EXISITING_CONNECT, 0)
Open Range("B2") For Binary As #1
bDoLoop = True
While bDoLoop
bDoLoop = InternetReadFile(hURLFile, sReadBuffer, Len(sReadBuffer), lNumberOfBytesRead)
lTotalBytesRead = lTotalBytesRead + lNumberOfBytesRead
If CBool(lNumberOfBytesRead) Then
Put #1, , sReadBuffer
Else
bDoLoop = False
End If
Wend
Close #1
InternetCloseHandle (hURLFile)
InternetCloseHandle (hInternetSession)
sReadBuffer объявлен так Dim sReadBuffer As String * 2048
Private Const INTERNET_OPEN_TYPE_PROXY = 3 ' Указывает что соединение через прокси
Private Const INTERNET_FLAG_EXISITING_CONNECT = &H20000000
Private Const INTERNET_FLAG_RELOAD = &H80000000 ' Обновляет данные если они есть в кэше
|