Ho provato a fare così e funziona solo parzialmente però, adesso vi spiego.
Con questo codice il processo excel non mi rimane appeso:

Public exApp As Excel.Application
Public exWb As Excel.Workbook
Public exWs As Excel.Worksheet


FileCopy sPercorso & sfile & ".xls", sPercorsoSave

Set exApp = New Excel.Application
exApp.Visible = False
Set exWb = exApp.Application.Workbooks.Open(sPercorsoSave, False)
DoEvents
exApp.DisplayAlerts = False

Set exWs = exWb.Worksheets("foglio1")

..istruzioni...

exApp.ActiveWorkbook.Save
exApp.ActiveWorkbook.Close
If exApp.Workbooks.Count <> 0 Then
exApp.Workbooks.Close
End If
exApp.UserControl = False
exApp.Application.Quit
Set exWs = Nothing
Set exWb = Nothing
Set exApp = Nothing

se però all'interno delle istruzioni aggiungo

With exWs.QueryTables.Add(sConnection, Range("A4"))

.CommandText = sSql
.FieldNames = False
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = True
.SaveData = True
.AdjustColumnWidth = False
.RefreshPeriod = 0
.PreserveColumnInfo = True
.Refresh BackgroundQuery:=False
End With

allora mi rimane nuovamente appeso excel nei processi, ma gli oggetti che ho aperto sono gli stessi..tutto a causa dell'istruzione exWs.QueryTables.Add()
Sapete spiegarmi perchè? C'è un modo particolare per scaricare le QueryTable?

Grazie per l'aiuto.