Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 19-01-2013
calco_hugo calco_hugo is offline
Miembro
 
Registrado: jul 2010
Posts: 42
Poder: 0
calco_hugo Va por buen camino
Smile 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
Responder Con Cita
  #2  
Antiguo 19-01-2013
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
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.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 19-01-2013 a las 16:09:03. Razón: ortografía
Responder Con Cita
  #3  
Antiguo 19-01-2013
calco_hugo calco_hugo is offline
Miembro
 
Registrado: jul 2010
Posts: 42
Poder: 0
calco_hugo Va por buen camino
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
Responder Con Cita
  #4  
Antiguo 19-01-2013
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola Hugo.

Por las dudas intentá registrar la aplicación en el equipo (W7 32) desde consola:
Código:
C:\>...\Excel.exe /regsvr32
Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #5  
Antiguo 19-01-2013
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Poder: 21
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
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.
Responder Con Cita
  #6  
Antiguo 19-01-2013
calco_hugo calco_hugo is offline
Miembro
 
Registrado: jul 2010
Posts: 42
Poder: 0
calco_hugo Va por buen camino
Smile

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
Responder Con Cita
  #7  
Antiguo 19-01-2013
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Poder: 21
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
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.

Última edición por nlsgarcia fecha: 19-01-2013 a las 22:19:28.
Responder Con Cita
  #8  
Antiguo 19-01-2013
calco_hugo calco_hugo is offline
Miembro
 
Registrado: jul 2010
Posts: 42
Poder: 0
calco_hugo Va por buen camino
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
Responder Con Cita
  #9  
Antiguo 20-01-2013
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Poder: 21
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
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.
Responder Con Cita
  #10  
Antiguo 20-01-2013
Avatar de pacopenin
pacopenin pacopenin is offline
Miembro
 
Registrado: sep 2010
Ubicación: Asturias
Posts: 382
Poder: 14
pacopenin Va por buen camino
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.
__________________
http://www.gestionportable.com
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Al exportar excel no me acepta variables (CreateOleObject) lmpadron C++ Builder 1 29-09-2012 21:26:11
Sintaxis Excel Application william2009 Servers 4 24-04-2008 23:16:28
EXCEL- CreateOleObject en Delphi 2006???? carrrlos Varios 0 28-01-2007 16:22:06
CreateOleObject('Excel.Application') KAYO Varios 3 19-12-2006 18:45:32
Excel desde Windows Forms Application TinkerBell .NET 3 13-01-2006 11:09:51


La franja horaria es GMT +2. Ahora son las 19:29:21.


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
Copyright 1996-2007 Club Delphi