Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Excel := CreateOleObject ('Excel.Application') (https://www.clubdelphi.com/foros/showthread.php?t=82044)

calco_hugo 19-01-2013 15:19:17

Excel := CreateOleObject ('Excel.Application')
 
ante todo buenos dias, desde ya gracias por leer el post y si me pueden ayudar barbaro, me estoy complicando con lo siguiente: tengo una aplicacion en delphi (delphi 7) que genera una planilla excel, en una pc (win 7 32 bits, español), excel version 14.xx 32 bits (ingles), en otro equipo (win 2003 server ingles) excel version 14.xx 32 bits (ingles), en estos equipos funcionan a la perfeccion, otro equipo (win 7 64 bits español) excel version 14.00 32 bits (español) la siguiente instruccion me da error

Código Delphi [-]
Excel := CreateOleObject ('Excel.Application')

el error es = clas EOleSysError 'Cadena clase no valida'

desde ya muchas gracias

ecfisa 19-01-2013 16:03:51

Hola calco_hugo.

En este momento se me ocurren dos motivos, verifica que Excel esté instalado y que tengas los privilegios necesarios para ejecutarlo.

Para lo primero podes hacer:
Código Delphi [-]
...
uses ComObj,ActiveX;

function ExcelInstalled: Boolean;
var
  ClassID: TCLSID;
  strOLEObject: string;
begin
  strOLEObject := 'Excel.Application';
  Result:= CLSIDFromProgID(PWideChar(WideString(strOLEObject)), ClassID) = S_OK;
end;
Y en la llamada:
Código Delphi [-]
var
  Excel: Variant;
begin
  if not ExcelInstalled then
    raise Exception.Create('Excel no está instalado');
 
  try
    Excel:= GetActiveOleObject('Excel.Application');
  except
    Excel:= CreateOleObject('Excel.Application');
  end;
  ...

Para lo segundo mira si te sirve este [enlace].

Saludos.

calco_hugo 19-01-2013 16:21:27

ecfisa, desde ya muchas gracias por responder y mas por ser sabado, si el excel esta instalado y tengo los permisos necesarios, si se le ocurre algo mas, por aca voy a andar
hugo

ecfisa 19-01-2013 17:36:27

Hola Hugo.

Por las dudas intentá registrar la aplicación en el equipo (W7 32) desde consola:
Código:

C:\>...\Excel.exe /regsvr32
Saludos.

nlsgarcia 19-01-2013 17:47:24

calco_hugo,

Cita:

Empezado por calco_hugo
La siguiente instruccion me da error: Excel := CreateOleObject ('Excel.Application'), el error es = clas EOleSysError 'Cadena clase no valida'

El error Invalid Class String ocurre cuando Excel no esta instalado en el equipo y por tanto la Automatización de Excel falla.

Este error es independiente de la versión de Windows (XP, Vista, Windows 7, Windows 8) o la plataforma (x32 o x64), si no esta instalado Excel no es posible usar los métodos de Automatización OLE (Object Linking and Embedding).

Según entiendo tienes instalado Office 2010 en la máquina con Windows 7 x64, Pregunto:

1- ¿Puedes reinstalar Officel 2010?, los métodos de instalación ofrecen una opción de Reparación de la Instalación, es simple y nos permite descartar cualquier problema con Office 2010.

2- ¿Puedes publicar tu código?, esto permitirá un análisis mayor del problema.

Espero sea útil :)

Nelson.

calco_hugo 19-01-2013 21:24:43

desde ya gracias por la ayuda, despues de mi ultimo post le mande el ejecutable a un compañero y le funciono con un equipo con una configuracion muy parecida a una de las maquinas que no me funciono, el excel esta instalado y funciona perfectamente para realizar o modificar planillas

Código Delphi [-]
procedure ......
var
  Excel, Libro : Variant;
begin
    excel := GetActiveOleObject('Excel.Application');
    Excel := CreateOleObject ('Excel.Application');
    Excel.Visible := True;
.....etc
end;

ya ahi en algunos equipos, que tienen instalado excel (o office) me da error
desde ya muchisimas gracias
hugo

nlsgarcia 19-01-2013 22:12:57

calco_hugo,

Cita:

Empezado por calco_hugo
...despues de mi ultimo post le mande el ejecutable a un compañero y le funciono con un equipo con una configuracion muy parecida a una de las maquinas que no me funciono...

Pregunto:

1- ¿Cual es la configuración de la máquina que mencionas en el Msg #6 donde funciono la Automatización de Excel (Versión de Windows y Office)?
2- ¿Cual es la versión de Delphi que usas?
3- ¿Probastes reinstalando Office?

Te comento:

1- ¿Por que usas las funciones GetActiveOleObject y CreateOleObject al mismo tiempo para la Automatización de Excel 2010?, si Excel esta activo se usa GetActiveOleObject en caso contrario se usa CreateOleObject.

2- Revisa el Msg #5 del siguiente link:
Cita:

Importar datos de un excell delphi
http://www.clubdelphi.com/foros/showthread.php?t=81972
El ejemplo del link anterior funciona en Windows 7 Professional x32 y x64 y fue hecho en Delphi 7.

3- Revisa este link:
Cita:

Delphi 3 - Delphi and Microsoft Office: Automating Excel and Word
http://edn.embarcadero.com/article/10126
Espero sea útil :)

Nelson.

calco_hugo 19-01-2013 22:39:36

nlsgarcia, gracias por tu atencion, con respecto al equipo del punto *6 es una noot con win 7 64 bits, office 2010, excel version 14.xx (32 bits), igual a una maquina en la que estoy probando y no funciona, el win 7 en el que no me funciona es win 7 home basic (ya es tarde para llamar a mi compañero y preguntar que version de win 7 tiene), utilizo delphi 7, desde ya gracias
hugp

nlsgarcia 20-01-2013 02:56:28

calco_hugo,


Te comento:

1- Según entiendo el equipo donde se presenta la falla de Invalid Class String tiene instalado Windows 7 Home Basic x64 y Office 2010 x32.

2- En un equipo similar la falla no se presenta (Falta por determinar si Windows 7 es Home Basic en el equipo mencionado).

3- En las especificaciones de Windows 7 Home Basic y Office 2010 al parecer no existe ninguna restricción en su uso conjunto.

4- Adicionalmente realize pruebas de Automatización con Excel 2010 en Windows Vista Home Premiun x32 y funciono correctamente.


Te sugiero realizar estas pruebas:

1- Prueba si funciona este código en el equipo en cuestión:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
   Excel : OLEVariant;
begin
   Excel := CreateOleObject('Excel.Application');
   Excel.Workbooks.Open(GetCurrentDir+'\TestData.xlsx');
   Excel.Quit;   
end;

2- Reinstala Office 2010, los métodos de instalación ofrecen una opción de Reparación de la Instalación, es simple y permite descartar cualquier problema con Office 2010.

3- Verifica el nivel de Service Pack del equipo donde se presenta la falla tanto de Windows 7 como de Office 2010 y comparalo con el equipo similar donde si funciono la Automatización de Excel 2010, quizás debas actualizar tu instalación.

Espero sea útil :)

Nelson.

pacopenin 20-01-2013 12:50:51

A lo mejor ya lo has resuelto, pero revisa la versión de Excel que está instalada. Existe (o existía, porque creo que ya no está disponible) una versión de Word y Excel gratuítas que no admiten automatización. Funcionan normalmente para la mayoría de las cosas pero esto en concreto no está permitido.


La franja horaria es GMT +2. Ahora son las 03:47:26.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi