Solución:
Si desea hacerlo solo con código (sin Control de transferencia de Internet), VBNet.mvps.org tiene un artículo de procedimientos realmente bueno que utiliza la llamada API URLDownloadToFile.
Del artículo:
La API URLDownloadToFile está disponible en todas las versiones del sistema operativo Windows (excepto Win3, WinNT3.x). Al pasar el nombre del archivo remoto y la ruta y el nombre del archivo local, la API descarga los bits del archivo especificado y los guarda como el nombre de destino. La función funciona con todos los tipos de archivos: archivos de texto sin formato, imágenes, html, mpg, wav y zip, etc. sin modificar la rutina o preocuparse por el archivo que se está descargando, ni existe ninguna restricción o limitación de tamaño aparente.
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 Const ERROR_SUCCESS As Long = 0
Private Const BINDF_GETNEWESTVERSION As Long = &H10
Private Const INTERNET_FLAG_RELOAD As Long = &H80000000
Public Function DownloadFile(sSourceUrl As String, _
sLocalFile As String) As Boolean
//'Download the file. BINDF_GETNEWESTVERSION forces
//'the API to download from the specified source.
//'Passing 0& as dwReserved causes the locally-cached
//'copy to be downloaded, if available. If the API
//'returns ERROR_SUCCESS (0), DownloadFile returns True.
DownloadFile = URLDownloadToFile(0&, _
sSourceUrl, _
sLocalFile, _
BINDF_GETNEWESTVERSION, _
0&) = ERROR_SUCCESS
End Function
Para su información, en las pruebas en Windows 7, solo devolvería la versión en caché, por lo que tuve que usar la función adicional mencionada en el artículo para borrarla primero (y eso funcionó).
Private Declare Function DeleteUrlCacheEntry Lib "Wininet.dll" _
Alias "DeleteUrlCacheEntryA" _
(ByVal lpszUrlName As String) As Long
Luego, simplemente llame a la función anterior con la URL de destino primero, para borrar el caché.
No necesita llamadas a la API, no necesita el control de transferencia de Internet. Simplemente hágalo de la manera más fácil, utilizando código VB6 nativo. Aquí hay un excelente artículo de Karl Peterson con código de muestra.
Prueba esto
Sub DownloadFile(url, path)
Dim objReq
Dim objStream
Set objReq = CreateObject("MSXML2.XMLHTTP")
objReq.Open "GET", url, False
objReq.send
If objReq.Status = 200 Then
Set objStream = CreateObject("ADODB.Stream")
objStream.Open
objStream.Type = 1
objStream.Write objReq.ResponseBody
objStream.Position = 0
objStream.SaveToFile path, 2
objStream.Close
Set objStream = Nothing
End If
Set objReq = Nothing
End Sub