From: Paul Martin on
Hi guys

I need to download files from a static URL and am using the following
code from http://officeone.mvps.org/vba/http_download_file.html:

Sub HTTPDownloadFile(ByVal URL As String, _
ByVal LocalFileName As String)
Dim HTTP As Inet
Dim Contents() As Byte

Set HTTP = New Inet ' <<<< CODE FAILS HERE

With HTTP
.Protocol = icHTTP
.URL = URL
Contents() = .OpenURL(.URL, icByteArray)
End With

Set HTTP = Nothing

Open LocalFileName For Binary Access Write As #1
Put #1, , Contents()
Close #1
End Sub

The code works on some machines but not others, failing at "Set HTTP =
New Inet".

The error message is:
"Run-time error '429':
ActiveX component can't create object".

I can't detect any reason why the code works on one machine and not
the other, as they are allegedly built from the same profile (both
running WinXP, Office2003). Both machines have MSINET.OCX, same
version (6).

I'm thinking maybe it's a registry entry, but hopefully someone on
here has come across this and has a solution?

TIA

Paul Martin
Melbourne, Australia
From: Chip Pearson on
Try using the URLDownloadToFile API function. For example,


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

Sub AAA()
Dim URL As String
Dim DestFile As String
Dim Res As Long

URL = "http://www.cpearson.com/Excel/about.htm"
DestFile = "C:\Test\About.htm"
On Error Resume Next
Kill DestFile
On Error GoTo 0
Res = URLDownloadToFile(0&, URL, DestFile, 0&, 0&)
If Res = 0 Then
Debug.Print "Success"
Else
Debug.Print "Failure"
End If
End Sub

Cordially,
Chip Pearson
Microsoft Most Valuable Professional
Excel Product Group, 1998 - 2009
Pearson Software Consulting, LLC
www.cpearson.com
(email on web site)

On Mon, 26 Jan 2009 21:17:00 -0800 (PST), Paul Martin
<melbournefilm(a)gmail.com> wrote:

>Hi guys
>
>I need to download files from a static URL and am using the following
>code from http://officeone.mvps.org/vba/http_download_file.html:
>
>Sub HTTPDownloadFile(ByVal URL As String, _
> ByVal LocalFileName As String)
> Dim HTTP As Inet
> Dim Contents() As Byte
>
> Set HTTP = New Inet ' <<<< CODE FAILS HERE
>
> With HTTP
> .Protocol = icHTTP
> .URL = URL
> Contents() = .OpenURL(.URL, icByteArray)
> End With
>
> Set HTTP = Nothing
>
> Open LocalFileName For Binary Access Write As #1
> Put #1, , Contents()
> Close #1
>End Sub
>
>The code works on some machines but not others, failing at "Set HTTP =
>New Inet".
>
>The error message is:
> "Run-time error '429':
> ActiveX component can't create object".
>
>I can't detect any reason why the code works on one machine and not
>the other, as they are allegedly built from the same profile (both
>running WinXP, Office2003). Both machines have MSINET.OCX, same
>version (6).
>
>I'm thinking maybe it's a registry entry, but hopefully someone on
>here has come across this and has a solution?
>
>TIA
>
>Paul Martin
>Melbourne, Australia