Yeah, there is a Windows API function for that. I made a wrapper function that clears the cache first, and then DLs the file.
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 DeleteUrlCacheEntry Lib "wininet" _
Alias "DeleteUrlCacheEntryA" (ByVal lpszUrlName As String) As Boolean
Function DownloadFromURL(FullURL As String, Destination As String) As Boolean
Dim varTemp As Variant
DownloadFromURL = False
If FullURL = Empty Then Exit Function
If Not Left(FullURL, 7) = "http://" Then Exit Function
If Destination = Empty Then Exit Function
On Error Resume Next
Kill Destination
On Error GoTo 0
varTemp = DeleteUrlCacheEntry(FullURL)
varTemp = URLDownloadToFile(0, FullURL, Destination, 0, 0)
If varTemp = 0 Then DownloadFromURL = True
End Function
EDIT:
Oh yeah, I forgot, this is "binary" download, and most webservers use Unix style text files, so any text file or CSV that you download will most likely have Unix-style EndOfLine characters, instead of Windows Style.
If you need it, I have a function to convert the EOLs from Unix to Windows.