With this code can open a file Excel from
VB
Public Sub ObtenerExcel(xArch As String)
Err.Clear
On Error GoTo xErrGetExcel
Dim MiXL As Object ' Variable que contiene la referencia
' a Microsoft Excel.
Dim ExcelNoSeEjecutaba As Boolean ' Indicador para liberación final .
Dim xNotepad
Set MiXL = CreateObject("Excel.Application")
Set MiXL = GetObject(, "Excel.Application")
If Err.Number <> 0 Then ExcelNoSeEjecutaba = True
Err.Clear ' Borra el objeto Err si se produce un error.
DetectarExcel
Set MiXL = GetObject(xArch)
MiXL.Application.Visible = True
MiXL.Parent.Windows(1).Visible = True
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.
Exit Sub
xErrGetExcel:
If Err.Number = 429 Then
MsgBox "Usted no tiene instalado EXCEL en su máquina." & Chr(13) & _
"El archivo " & UCase(xArch) & _
" se mostrará con un editor de texto.", vbExclamation, App.Title
xNotepad = Shell("Notepad" & " " & UCase(xArch), vbNormalFocus)
Exit Sub
End If
MsgBox "Se presentó un error en la subida de Excel" & Chr(13) & _
Err.Number & " = " & Err.Description, vbCritical, App.Title
Exit Sub
End Sub
Public Sub DetectarExcel()
Err.Clear
On Error GoTo xErrDetectExcel
Const WM_USER = 1024
Dim hWnd As Long
hWnd = FindWindow("XLMAIN", 0)
If hWnd = 0 Then ' 0 quiere decir que Excel no se está ejecutando .
Exit Sub
Else
SendMessage hWnd, WM_USER + 18, 0, 0
End If
Exit Sub
xErrDetectExcel:
MsgBox "Se presentó un error en la detección de Excel" & Chr(13) & _
Err.Number & " = " & Err.Description, vbCritical, App.Title
Exit Sub
End Sub