Where your loop sits is dependant on how long this will take to run. The most effiecient way is to only open the connection once but if this will take a long time, you may run into issues with connection timeouts
MyConnect = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=F:\CustDbase.accdb"
Dim Rng as range
Dim i as long
rng = worksheets("SheetName").Range("A1")
i = 1
Do while rng.offset(i,0) <> ""
MySQL = "SELECT Fields FROM Tables WHERE Table1.ID=" rng.offset(i,0) & "AND Table2.ID=" & rng.offset(i,1) & "AND Table3.ID=" & rng.offset(i,2) & "ORDER BY Whatever"
Set MyRecordset = New ADODB.Recordset
MyRecordset.Open MySQL, MyConnect, adOpenStatic, adLockReadOnly
'Dump data onto sheet
Sheets("SheetName").Range("A1").copyfromrecordset MyRecordset
'process data
'release recordset from memory
set MyRecordset = nothing
i = i + 1
Loop