Verificar si EXCEL esta instalado

HMG en Español

Moderator: Rathinagiri

User avatar
edufloriv
Posts: 240
Joined: Thu Nov 08, 2012 3:42 am
DBs Used: DBF, MariaDB, MySQL, MSSQL, MariaDB
Location: PERU

Verificar si EXCEL esta instalado

Post 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,

Eduardo Flores Rivas


LIMA - PERU
User avatar
luisvasquezcl
Posts: 1259
Joined: Thu Jul 31, 2008 3:23 am
Location: Chile
Contact:

Re: Verificar si EXCEL esta instalado

Post 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
User avatar
edufloriv
Posts: 240
Joined: Thu Nov 08, 2012 3:42 am
DBs Used: DBF, MariaDB, MySQL, MSSQL, MariaDB
Location: PERU

Re: Verificar si EXCEL esta instalado

Post by edufloriv »

Luis,

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

Un gran abrazo.

Eduardo Flores Rivas


LIMA - PERU
User avatar
Pepe Ruano
Posts: 65
Joined: Fri Aug 16, 2013 11:31 am
DBs Used: DBF
Location: Almansa, Albacete - Spain
Contact:

Re: Verificar si EXCEL esta instalado

Post 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.
Saludos - Regards
Pepe Ruano
hmg.ruano.org
User avatar
Pepe Ruano
Posts: 65
Joined: Fri Aug 16, 2013 11:31 am
DBs Used: DBF
Location: Almansa, Albacete - Spain
Contact:

Re: Verificar si EXCEL esta instalado

Post 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.
Saludos - Regards
Pepe Ruano
hmg.ruano.org
User avatar
andyglezl
Posts: 1461
Joined: Fri Oct 26, 2012 7:58 pm
Location: Guadalajara Jalisco, MX
Contact:

Re: Verificar si EXCEL esta instalado

Post 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 ?
Andrés González López
Desde Guadalajara, Jalisco. México.
User avatar
danielmaximiliano
Posts: 2625
Joined: Fri Apr 09, 2010 4:53 pm
Location: Argentina
Contact:

Re: Verificar si EXCEL esta instalado

Post 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
*´¨)
¸.·´¸.·*´¨) ¸.·*¨)
(¸.·´. (¸.·` *
.·`. Harbour/HMG : It's magic !
(¸.·``··*

Saludos / Regards
DaNiElMaXiMiLiAnO

Whatsapp. := +54901169026142
Telegram Name := DaNiElMaXiMiLiAnO
User avatar
Pepe Ruano
Posts: 65
Joined: Fri Aug 16, 2013 11:31 am
DBs Used: DBF
Location: Almansa, Albacete - Spain
Contact:

Re: Verificar si EXCEL esta instalado

Post 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.
Saludos - Regards
Pepe Ruano
hmg.ruano.org
User avatar
danielmaximiliano
Posts: 2625
Joined: Fri Apr 09, 2010 4:53 pm
Location: Argentina
Contact:

Re: Verificar si EXCEL esta instalado

Post by danielmaximiliano »

En windows 64 la ruta cambia por

Code: Select all

C:\Program Files (x86)
*´¨)
¸.·´¸.·*´¨) ¸.·*¨)
(¸.·´. (¸.·` *
.·`. Harbour/HMG : It's magic !
(¸.·``··*

Saludos / Regards
DaNiElMaXiMiLiAnO

Whatsapp. := +54901169026142
Telegram Name := DaNiElMaXiMiLiAnO
User avatar
Pepe Ruano
Posts: 65
Joined: Fri Aug 16, 2013 11:31 am
DBs Used: DBF
Location: Almansa, Albacete - Spain
Contact:

Re: Verificar si EXCEL esta instalado

Post 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
Last edited by Pepe Ruano on Fri Nov 20, 2015 10:17 pm, edited 1 time in total.
Saludos - Regards
Pepe Ruano
hmg.ruano.org
Post Reply