Visual Basic - Office

Life is soft - evento anual de software empresarial
 
Vista:

Office

Publicado por adei (3 intervenciones) el 18/07/2008 14:12:09
Hola a todos,

Tengo una aplicación en VB6.0 que utiliza Excel. En el equipo de desarrollo está instalado Office 2003, en el equipo de producción Office 2000 y casca. He probado en un equipo con Office 2000 a cambiarlo a 2002 y funciona bien, pero lo que no puedo hacer es cambiar en todos los equipos de producción y en los de desarrollo el paquete Office.

Por ello quisiera preguntar si existe algún parche o algo para que una aplicación compilada usando Office 2002 o 2003 funcione con un Office 2000.

Gracias de antemano
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Office

Publicado por adei (3 intervenciones) el 18/07/2008 14:17:21
Se me ha olvidado comentar que cuando casca es cuando intenta abrir un archivo excel
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Office

Publicado por pacopaz (173 intervenciones) el 18/07/2008 17:17:32
Hasta donde sé, el error se da por la referencia a la libreria que haces cuando generas el programa. Como esta depende de la versión a la que llamas, si no la encuentra, genera el error.
El problema es que no puedes estar programando para cualquier caso, a menos que te pusieras a hacer librerías u Objetos ActiveX para cada caso (cada versión), además de programar la detección de versiones.
La opción que me ha funcionado a mi (en Delphi), es crear los Objetos Ole, aunque así vas a 'progaramar a ciegas'. Y me explico:
Se requiere declarar un Objeto genérico y luego a este asignarle una instancia del Objeto Ole que requieres, en este caso, Excel, para luego ponerte a porgramar todo lo demás según los métodos, procedimientos y eventos definidos para el Objeto Ole, que son muy similares a lo que haces con la referencia a la librería de excel.
Puedes empezar con algo así:

Dim xApp, xBooks, xSheet As Object

Set xApp = CreateObject("Excel.Application")
Set xBooks = xApp.WorkBooks.Open("c:Nada.xls")
Set xSheet = xBooks.WorkSheets(1)
xApp.Visible = True

Si deseas que Excel sea sólo para versión 2000, tendrías que poner "Excel.Application.9" que es la versión. Para XP es .10 y para 2003 es .11.
Si no lo especificas, tomará la que encuentre.
Si te fijas, hay una variable para la aplicación (xApp) otra para los libros en la aplicación (xBooks) y otra para las hojas en los libros (xSheet). Si sólo necesitas abrirlo, no ocupas xSheet, pero si necesitas modificar el archivo, todo lo haces con xSheet.
Hay mucha información al respecto de esto, para que hagas tu aplicación independiente de las versiones. Ojalá que te sea de ayuda.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Office

Publicado por adei (3 intervenciones) el 22/07/2008 10:41:29
Buenas, he probado lo que me has dicho y a mi en mi equipo me funciona, pero claro, antes desinstale el Office2003, instalé el 2000 volví a desinstalarlo y me quedé con el 2003. ¿Puede que todavía en los registros de windows se guarden referencias al 2000?

En el equipo de producción, nada mas lanzar el .exe salta un error: "Run-time error '7'. Out of memory". El equipo de desarrollo tiene menos memoria que el de produccion asi que deduzco que no puede ser por falta de memoria. En cambio, cuando registro un .ocx antiguo (compilado con el Office 2000 que traje de la empresa) si que me saca ese error.

¿¿Alguna idea??
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar