Показать сообщение отдельно
Старый 12.02.2007, 17:43   #2  
Raul is offline
Raul
Участник
 
35 / 10 (1) +
Регистрация: 15.03.2006
У меня тоже недавно стал похожий вопрос о загрузке БИК с сайта, наверно есть куча компонент кроме 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 ' Обновляет данные если они есть в кэше