Visual Basic 6.0 y Excel

Estoy trabajando en una aplicación de VB 6.0 la cual utiliza automatización para trabajar con un archivo de excel, mi aplicación abre excel y crea un archivo al vuelo y lo cierra, obviamente mi programa requiere que excel este instalado en la pc donde se intala el mismo (mi programa no instala excel.
Ahora, mi problema es que si lo compilo en una PC donde tenga instalado Office 97, entonces en ejecución busca el archivo EXCEL8. OLB, cuando lo compilo en Offce 2000, entonces busca en ejecución el archivo EXCEL9. OLB y cuando lo compilo en Office XP busca en ejecución el archivo EXCEL.EXE, esto me ha obligado a tener 3 instaladores, cada uno compilado en una pc con una version de Office en particular (97,2000 y XP) y, luego cuando lo instalo verifico que Office tiene instalada la PC destino e instalo el setup correcto.
Si lo instalo mi programa compilado en una pc donde tenga Office 97 instalado y luego lo instalo en una PC que tenga Office 2000 instalado, al ejecutarse mi rutina de acceso a Excel truena mi programa, siempre debo asegurarme de instalar la version correcta y esto me ha echo la vida de cuadritos.
¿Cómo puedo hacer para tener un solo instalador, sin importar que version de Excel (Office xxxx) tenga instalada la pc donde se instala?
Anexo algo del código de mi rutina que crea el archivo de excel.
Muchas gracias por tu ayuda.
Public Sub GeneraXLS1(file As String, rsPartidas As ADODB.Recordset, cliente As clsCliente)
On Error GoTo GeneraXLS1_Error
Dim xlApp As Excel.Application
Dim xlbook As Excel.Workbook
Dim xlSheet As Excel.Worksheet
Set xlApp = New Excel.Application'ESTA LINEA TRUENA SI ESTA LA VERSION DE EXCEL EQUIVOCADA
Set xlbook = xlApp.Workbooks.Open("c:\TEMPLATE.XLS")
Set xlSheet = xlbook.Worksheets(1)
xlSheet.Cells(fila, COL_XLS_PARTIDA).Value = "PARTIDA"
xlSheet.Cells(fila, COL_XLS_UBICACION).Value = "UBICACION"
xlSheet.Cells(fila, COL_XLS_DESCRIPCION).Value = "DESCRIPCION"
xlSheet.Cells(fila, COL_XLS_ANCHO).Value = "ANCHO"
xlSheet.Cells(fila, COL_XLS_ALTO).Value = "ALTO"
xlSheet.Cells(fila, COL_XLS_PIEZAS).Value = "PIEZAS"
xlSheet.Cells(fila, COL_XLS_PU).Value = "PU"
xlSheet.Cells(fila, COL_XLS_TOTAL).Value = "TOTAL"
'---aqui se ejecutan mas operacinoes similares a las anteriores
xlbook.SaveAs file
xlApp.Visible = True
Set xlApp = Nothing
Set xlbook = Nothing
Set xlSheet = Nothing
Screen.MousePointer = vbNormal
GoTo Fin
GeneraXLS1_Error:
If Err <> CANCEL_EXCEL_ERR Then
MsgBox "Error: " & Err & " " & Error, vbCritical
Else
xlbook.Close False
xlApp.Quit
End If
Fin:
End Sub

3 Respuestas

Respuesta
1
¿Estaba estudiando tu problema cuando tu programa truena llamas a que muestra el mensaje de error no?
Esto pasa si te equivocaste al instalar el dll de excel correspondiente
¿Probaste cargando todas las dll? ¿Juntas en el mismo programa?
Porque antes de entrar a esta parte haces un buscador del archivo
Pregunta si encuenta el excel8. ¿Old si la ruta donde lo guardas la conoces vas a ser más rapido?
Por favor contestame mis dudas porque es un tema sobre el cual interesa a muchos...
Respuesta
1
Tienes que cambiar por un createobjet("excel.application")
Checa la siguiente liga:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vbenlr98/html/vafctcreateobject.asp
Y también busca en la página de http://www.planetsourcecode.com
Respuesta
1
Te anexo una rutina que quizás te sirva ya que chequea que version de excel esta instalada y la abre.
Saludos
Sub ConnectExcel()
' Determina que version de excel esta disponible en la pc
On Error Resume Next
ExcelVer = 0
'---------------------------------
' Busca Excel 10
'---------------------------------
Err.Clear
Set ExcelServer = GetObject(, "Excel.Application.10")
If Err.Number = 0 Then
ExcelVer = 10
GoTo FINISH
End If
Err.Clear
Set ExcelServer = CreateObject("Excel.Application.10")
If Err.Number = 0 Then
ExcelVer = 10
GoTo FINISH
End If
'---------------------------------
' Busca Excel 9
'---------------------------------
Err.Clear
Set ExcelServer = GetObject(, "Excel.Application.9")
If Err.Number = 0 Then
ExcelVer = 9
GoTo FINISH
End If
Err.Clear
Set ExcelServer = CreateObject("Excel.Application.9")
If Err.Number = 0 Then
ExcelVer = 9
GoTo FINISH
End If
'---------------------------------
' Busca Excel 8
'---------------------------------
Err.Clear
Set ExcelServer = GetObject(, "Excel.Application.8")
If Err.Number = 0 Then
ExcelVer = 8
GoTo FINISH
End If
Err.Clear
Set ExcelServer = CreateObject("Excel.Application.8")
If Err.Number = 0 Then
ExcelVer = 8
GoTo FINISH
End If
FINISH:
' Si Excel no existe
If (ExcelVer = 0) Then
MsgBox "You must have Excel97 installed to run this program", vbCritical, conDemoName
Userform1.Hide
End If
ExcelServer.WindowState = -4140 ' xlMinimized
ExcelServer.Visible = True ' Make it visible
End Sub
Donde: Excel. Application. 10 <-- este numero determina la version de Excel que esta buscando.
Yo utilizo esta rutina para ubicar y controlar excel desde VBA de AutoCAD.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas