I'm not sure if this is a standard procedure or not, but I did not want to clutter up my question unnecessarily so that people reading this could better understand.
But I found an alternative solution to my question, which is more consistent with what I originally requested. Thanks again to Tim as he set me on the right track and using ADODB.Stream is an important part of my solution.
This uses Microsoft WinHTTP Services 5.1.DLL, which must be enabled on Windows in one version or another if it is not loaded.
I use the following code in a class called "HTTPRequest"
Option Explicit Private WithEvents HTTP As WinHttpRequest Private ADStream As ADODB.Stream Private HTTPRequest As Boolean Private I As Double Private SaveP As String Sub Main(ByVal URL As String) HTTP.Open "GET", URL, True HTTP.send End Sub Private Sub Class_Initialize() Set HTTP = New WinHttpRequest Set ADStream = New ADODB.Stream End Sub Private Sub HTTP_OnError(ByVal ErrorNumber As Long, ByVal ErrorDescription As String) Debug.Print ErrorNumber Debug.Print ErrorDescription End Sub Private Sub HTTP_OnResponseFinished() 'Tim code Starts' With ADStream .Type = 1 .Open .Write HTTP.responseBody .SaveToFile SaveP, 2 .Close End With 'Tim code Ends' HTTPRequest = True End Sub Private Sub HTTP_OnResponseStart(ByVal Status As Long, ByVal ContentType As String) End Sub Private Sub Class_Terminate() Set HTTP = Nothing Set ADStream = Nothing End Sub Property Get RequestDone() As Boolean RequestDone = HTTPRequest End Property Property Let SavePath(ByVal SavePath As String) SaveP = SavePath End Property
The main difference between this and what Tim described is that WINHTTPRequest has its own built-in events, which I can wrap in one neat little class and use it everywhere. This is a more elegant solution for me than calling XMLHttp and then passing it to the class to wait for it.
Having completed this in the classroom, this means that I can do something in accordance with this.
Dim HTTP(10) As HTTPRequest Dim URL(2, 10) As String Dim I As Integer, J As Integer, Z As Integer, X As Integer While Not J > I For X = 1 To I If Not TypeName(HTTP(X)) = "HTTPRequest" And Not URL(2, X) = Empty Then Set HTTP(X) = New HTTPRequest HTTP(X).SavePath = URL(2, X) HTTP(X).Main (URL(1, X)) Z = Z + 1 ElseIf TypeName(HTTP(X)) = "HTTPRequest" Then If Not HTTP(X).RequestDone Then Exit For Else J = J + 1 Set HTTP(X) = Nothing End If End If Next DoEvents Wend
Where I just iterate over URL () with URL (1, N), this is URL and URL (2, N) is the save location.
I admit that it might be a little easier, but now for me it is done for me. Just drop my decision there for everyone who cares.