Bueno, no sé porque puede ser. Prueba con esta función, como parámetro le pasas el recordset:
Código:
Function ExportExcel(ByVal rs As ADODB.Recordset)
Dim oExcel As Excel.Application
Dim oWBook As Excel.Workbook
Dim oSheet As Excel.Worksheet
Dim iFila As Long, iCol As Integer, i As Integer
Set oExcel = New Excel.Application
Set oWBook = oExcel.Workbooks.Add
Set oSheet = oWBook.Worksheets(1)
Screen.MousePointer = vbHourglass
iFila = 1
iCol = 1
rs.MoveFirst
For i = 0 To rs.Fields.Count - 1
' pone el nombre de los campos en la primera fila
oSheet.Cells(iFila, i + 1) = rs.Fields(i).Name
Next
iFila = iFila + 1
With oSheet
' carga los registros del recordset
.Cells(iFila, iCol).CopyFromRecordset rs
.Columns.AutoFit ' ajusta el ancho de las columnas
End With
oExcel.Visible = True
Set oExcel = Nothing
Screen.MousePointer = vbDefault
End Function
Al cerrar, te preguntará si quieres guardar los cambios, le dices que sí y lo guardas con el nombre que quieras.
Espero que esta vez te funcione!