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
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 de emperador20
1
Respuesta de denciso
1
Respuesta de Raul Hernandez
1