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
Private Declare Function InternetOpen Lib "wininet" Alias "InternetOpenA" (ByVal sAgent As String, ByVal lAccessType As Long, ByVal sProxyName As String, ByVal sProxyBypass As String, ByVal lFlags As Long) As Long
Private Declare Function InternetOpenUrl Lib "wininet" Alias "InternetOpenUrlA" (ByVal hInternetSession As Long, ByVal lpszUrl As String, ByVal lpszHeaders As String, ByVal dwHeadersLength As Long, ByVal dwFlags As Long, ByVal dwContext As Long) As Long
Private Declare Function InternetReadFile Lib "wininet" (ByVal hFile As Long, ByVal sBuffer As String, ByVal lNumBytesToRead As Long, lNumberOfBytesRead As Long) As Integer
Private Declare Function InternetCloseHandle Lib "wininet" (ByVal hInet As Long) As Integer
Private Declare Function InternetSetOption Lib "wininet.dll" Alias "InternetSetOptionA" (ByVal hInternet As Long, ByVal dwOption As Long, ByRef lpBuffer As Any, ByVal dwBufferLength As Long) As Long
Private Const INTERNET_OPTION_CONNECT_TIMEOUT As Long = 2
Private Const IF_NO_CACHE_WRITE = &H4000000
Private Function GetHTML(sURL As String, Optional ByVal lngTimeout As Long = 4500) As String
Dim sBuffer As String * 1000
Dim lInternet As Long
Dim lFile As Long
Dim lRead As Long
lInternet = InternetOpen(0, 1, vbNullString, vbNullString, 0)
If lInternet <> 0 Then
Call InternetSetOption(lInternet, INTERNET_OPTION_CONNECT_TIMEOUT, lngTimeout, 4)
lFile = InternetOpenUrl(lInternet, sURL, vbNullString, 0, IF_NO_CACHE_WRITE, 0)
If lFile <> 0 Then
Do
Call InternetReadFile(lFile, sBuffer, 1000, lRead): DoEvents
GetHTML = GetHTML & Left$(sBuffer, lRead)
Loop While lRead <> 0
End If
Call InternetCloseHandle(lInternet)
End If
End Function