Jeremy
Al decir Set objExcel = Nothing , tan solo estas cerrando la sesion de visual basic sobre el objeto que referenciaste para Excel, mas no estas cerrando excel.
Por lo que entiendo, la exportacion que haces no deseas que se vea y se manipule por el usuario, tan solo deseas exportar, quizas guardar y cerrar...Es lo que entiendo en cuanto al procedimiento que has hecho..
Para cerrar la sesion de Excel sin interaccion alguna del usuario tan solo coloca el Quit al objeto que declaraste en visual Basic.
Por ejemplo: Declara una variable boolean y activala cuando levantes excel, luego
If tbExcelEjecutandose = False Then
toExcel.Application.Quit
Else
toExcel.Close
End If
En la ayuda MSDN conseguiras un ejemplo completo de todo esto...es el codigo q te copio a continuacion tal cual esta en la ayuda...
' Declara las rutinas API necesarias:
Declare Function FindWindow Lib "user32" Alias _
"FindWindowA" (ByVal lpClassName as String, _
ByVal lpWindowName As Long) As Long
Declare Function SendMessage Lib "user32" Alias _
"SendMessageA" (ByVal hWnd as Long,ByVal wMsg as Long _
ByVal wParam as Long _
ByVal lParam As Long) As Long
Sub GetExcel()
Dim MiXL As Object ' Variable que contiene la referencia
' a Microsoft Excel.
Dim ExcelNoSeEjecutaba As Boolean ' Indicador para liberación final .
' Prueba para ver si hay una copia de Microsoft Excel ejecutándose.
On Error Resume Next ' Difiere la interceptación de errores.
' La llamada a la función Getobject sin el primer argumento devuelve una
' referencia a una instancia de la aplicación. Si no se está ejecutando
' se produce un error.
Set MiXL = Getobject(, "Excel.Application")
If Err.Number <> 0 Then ExcelNoSeEjecutaba = True
Err.Clear ' Borra el objeto Err si se produce un error.
' Comprueba Microsoft Excel. Si se está ejecutando Microsoft Excel,
' lo introduce en la tabla Running Object.
DetectExcel
' Establece la variable de objeto para hacer referencia al archivo que desea ver.
Set MiXL = GetObject("c:\vb4\MIPRUEBA.XLS")
' Muestra Microsoft Excel mediante su propiedad Application. Después
' muestra la ventana real que contiene el archivo mediante
' la colección Windows de la referencia de objeto MiXL.
MiXL.Application.Visible = True
MiXL.Parent.Windows(1).Visible = True
' Hace manipulaciones de su archivo aquí.
' ...
' Si no se está ejecutando esta copia de Microsoft Excel cuando
' comenzó, ciérrela con el método Quit de la propiedad Application.
' Observe que cuando intenta salir de Microsoft Excel, la barra de título
' parpadea y muestra el mensaje
' preguntándole si desea guardar los archivos cargados.
If ExcelNoSeEjecutaba = True Then
MiXL.Application.Quit
End IF
Set MiXL = Nothing ' Libera la referencia a la
' aplicación y a la hoja de cálculo.
End Sub
Sub DetectExcel()
' El procedimiento detecta que Excel está en ejecución y lo registra.
Const WM_USER = 1024
Dim hWnd As Long
' Si se está ejecutando Excel, esta llamada a la API devuelve el controlador.
hWnd = FindWindow("XLMAIN", 0)
If hWnd = 0 Then ' 0 quiere decir que Excel no se está ejecutando .
Exit Sub
Else
' Excel se está ejecutando, por lo que se utiliza la función SendMessage de la API
' para introducirlo en la tabla Running Object.
SendMessage hWnd, WM_USER + 18, 0, 0
End If
End Sub