Page 1 of 3

Verificar si EXCEL esta instalado

Posted: Thu Oct 22, 2015 5:00 pm
by edufloriv
Saludos amigos,

Me tope por allí con un cliente que no tiene instalado excel, por supuesto lo va a instalar pero los empleados insisten en sacar el reporte en excel. Como verifico que excel está instalado para evitar el error y el break del programa ?

Buscando encontré en el foro esto:

Code: Select all

      oExcel := CreateObject( "Excel.Application" ) 
      oExcel:DisplayAlerts := 0
      if Ole2TxtError() != "S_OK"
         MsgStop("Excel no esta disponible en esta computadora - Error "+Ole2TxtError(), "ATENCION")
         return nil
      endif
      oWorkBook := oExcel:WorkBooks:Add()
Pero no lo he probado aún (no tengo una pc que no tenga excel). Por favor confirmenme si es correcto o existe otra alternativa.

Agradeciendo de antemano su gentil ayuda.


Cordiales saludos,

Re: Verificar si EXCEL esta instalado

Posted: Thu Oct 22, 2015 5:56 pm
by luisvasquezcl
Hola Eduardo,
Funciona correctamente.
Yo lo escribiria de la siguiente forma:

oExcel := CreateObject( "Excel.Application" )
if Ole2TxtError() != "S_OK"
MsgStop("Excel no esta disponible en esta computadora - Error "+Ole2TxtError(), "ATENCION")
return nil
endif
oExcel:DisplayAlerts := 0 ---> ESTA LINEA VA AQUI, SI LA PONES ANTES DEL IF TE VA A DAR ERROR.
Espero te sea de ayuda
Saludos cordiales,
Luis Vasquez

Re: Verificar si EXCEL esta instalado

Posted: Thu Oct 22, 2015 7:04 pm
by edufloriv
Luis,

Mil gracias por tu respuesta. Hago las modificaciones y se lo paso a mi cliente.

Un gran abrazo.

Re: Verificar si EXCEL esta instalado

Posted: Mon Nov 16, 2015 6:53 pm
by Pepe Ruano
Hola.
A mi no me funciona el siguiente código para comprobar si está instalado Excel. Lo he probado en un ordenador que no tiene Office y me da este error
Error TOleAuto/-1 : TOLEAUTO:NEW

Supongo que es porque tampoco está instalado el Office, hay alguna forma de saberlo y corregir este error ?

Este es código que pongo para comprobar:

Code: Select all

Local oExcel:=CreateObject("Excel.Application")
   
   If Ole2TxtError() != "S_OK"
        MsgStop("Excel no está disponible - Error "+Ole2TxtError(), "Error Excel")
        return .F.
     Else
        MSGINFO("Microsoft Excel está INSTALADO","PRUEBA DE EXCEL")
	Return .T.
   Endif
   
Retu Nil
Gracias.

Re: Verificar si EXCEL esta instalado

Posted: Thu Nov 19, 2015 3:06 pm
by Pepe Ruano
Por favor, algún entendido no me puede ayudar ?

Debe existir algún modo para que si CreateObject(...) no se ejecuta y da error, que no se cuelgue la aplicación y podamos mostrar algún mensaje.

En este caso, es porque no está instalado Office . Pero no quiero que se cuelgue el programa y en vez permitir que ejecute Excel, mandarlo a otra opción.

¡ Animo y a ver si me podéis aclarar algo !

Muchas Gracias.

English (translator Google :-( )

Please some can guru not help me?

There must be some way so that if CreateObject (...) does not run and fails, the application will not hang up and can display a message.

In this case, it is because Office is not installed. But I do not want the program to crash and instead allow run Excel, send it to another option.

And I encourage you to see if I can clarify something!

Thank you very much.

Re: Verificar si EXCEL esta instalado

Posted: Thu Nov 19, 2015 3:27 pm
by andyglezl
Con el CreateObject() no se.

Pero tal vez si validas por la existencia de la carpeta de Office ó el archivo Excel.exe ...

C:\Program Files\Microsoft Office\Office12\Excel.exe

Funciona correctamente.
Yo lo escribiria de la siguiente forma:

oExcel := CreateObject( "Excel.Application" )
if Ole2TxtError() != "S_OK"
MsgStop("Excel no esta disponible en esta computadora - Error "+Ole2TxtError(), "ATENCION")
return nil
endif
oExcel:DisplayAlerts := 0 ---> ESTA LINEA VA AQUI, SI LA PONES ANTES DEL IF TE VA A DAR ERROR.
Espero te sea de ayuda
Saludos cordiales,
Luis Vasquez
Ahora, ya probaste con lo que puso Luis ?

Re: Verificar si EXCEL esta instalado

Posted: Thu Nov 19, 2015 4:25 pm
by danielmaximiliano
Hola Pepe, estoy mirando los ejemplos OLE, como no tengo oficce sera facil reproducir tu error.

intentario colocar Try Cacht para atrapar el error, sino ver la forma de usar GETOBJECT() para saber si existe ese objecto comm..
estoy recreando las librerias de HMG al patch 3... pruebo y comento

Re: Verificar si EXCEL esta instalado

Posted: Thu Nov 19, 2015 6:03 pm
by Pepe Ruano
andyglezl wrote:Con el CreateObject() no se.

Pero tal vez si validas por la existencia de la carpeta de Office ó el archivo Excel.exe ...

C:\Program Files\Microsoft Office\Office12\Excel.exe
Gracias por tu respuesta Andy.

De momento lo he probado y si que funcina :-)
Sigo probando y se agradece cualquier comentario para asegurarnos de es correcto. Esto es lo que de momento he puesto:

Code: Select all

IF FILE("C:\Program Files\Microsoft Office\Office12\Excel.exe")
	Return .T.
   ELSE
        Return .F.
ENDIF
No se si funcionará en todos los Windows y Office, siempre es la misma ruta ?

Muchas gracias Andy.
Y a Daniel también por su respuesta. Espero que si encuentras alguna otra solución, lo comentes.

Repito Muchas gracias.

Re: Verificar si EXCEL esta instalado

Posted: Thu Nov 19, 2015 6:58 pm
by danielmaximiliano
En windows 64 la ruta cambia por

Code: Select all

C:\Program Files (x86)

Re: Verificar si EXCEL esta instalado

Posted: Fri Nov 20, 2015 12:54 pm
by Pepe Ruano
danielmaximiliano wrote:En windows 64 la ruta cambia por

Code: Select all

C:\Program Files (x86)
Gracias Daniel. Al final el código que he puesto queda así

Code: Select all

*-----------------------------------------------------------------------------*
Procedure COMPRUEBAEXCEL()	// COMPRUEBA SI TENEMOS EXCEL INSTALADO
*-----------------------------------------------------------------------------*
Local oExcel 
    
IF FILE("C:\Program Files\Microsoft Office\Office12\Excel.exe")
   		
		oExcel :=CreateObject("Excel.Application")
		IF Ole2TxtError() != "S_OK"
        	MsgStop("Excel No está disponible "+Ole2TxtError(), "Comprobar Excel")
      		Return .F.
		ELSE
			MSGINFO("Microsoft Excel está INSTALADO","Comprobar Excel")
	  		Return .T.
   		ENDIF
		
        ELSEIF FILE("C:\Program Files (x86)\Microsoft Office\Office12\Excel.exe")
			oExcel :=CreateObject("Excel.Application")
			IF Ole2TxtError() != "S_OK"
        		MsgStop("Excel No está disponible "+Ole2TxtError(), "Comprobar Excel")
      			Return .F.
		  	 ELSE
				MSGINFO("Microsoft Excel está INSTALADO","Comprobar Excel")
	  			Return .T.
			ENDIF
   		ELSE
			MsgStop("Excel No está disponible en este equipo", "Comprobar Excel")
      			Return .F.
ENDIF	

Return NIl
A mi me funciona pero tengo equipos con Windows de 32 bits.
Por favor alguien que tenga 64 bits podría probarlo a ver si funciona ??

Muchas gracias