Developer - Problema al automatizar excel

 
Vista:

Problema al automatizar excel

Publicado por David Amador Martín (1 intervención) el 03/10/2005 13:45:32
Buenas, tengo problemas al automatizar excel utilizando objetos OLE con Forms 6.0, abro excel, escribo y leo datos perfectamente pero al cerrar el fichero y cerrar la sesion de excel ya no puedo abrir de nuevo una sesión diferente de excel de otro fichero distinto que no sea el que he abierto antes.
El código que utilizo para abrir y cerrar es el siguiente:

Function AbrirConexion(visible boolean default false) return number is
sVersion varchar2(20);
Begin
if obj_aplicacion is not null then
ExclError('Error: La conexión ya se realizó anteriormente.');
else

-- Crea un nuevo objeto OLE para la aplicación de Excel
if OLE2.issupported then
begin
obj_aplicacion := OLE2.CREATE_OBJ('Excel.Application');
exception
when others then
ExclError('Error: No se ha podido capturar el objeto Excel, compruebe que la aplicación esté correctamente instalada.');
return 1;
end;

-- Recoge el objeto donde estarán contenidos los trabajos que se vayan a abrir
obj_workbooks := OLE2.get_obj_property(obj_aplicacion,'Workbooks');
if (visible) then
OLE2.Set_Property(obj_aplicacion,'Visible',1); -- Para mostrar la pantalla excel
END IF;

return 0;
else
ExclError('Error: Este PC no soporta objetos OLE.');
return 1;
end if;
end if;
sVersion := OLE2.Get_char_property(obj_aplicacion,'Version');
if not (sVersion like '8%' or sVersion like '9%') then
ExclError('Error: Versión de Excel no válida, debe tener la versión de Excel 97 o 2000 para trabajar');
OLE2.Invoke(obj_aplicacion,'Quit');
OLE2.Release_Obj(obj_aplicacion);
return 1;
end if;
End AbrirConexion;

Procedure nuevo_fichero is
lista1 OLE2.LIST_TYPE;
Begin
obj_workbook := OLE2.get_obj_property(obj_aplicacion,'Workbooks');
OLE2.Invoke(obj_workbook,'Add');

-- Recoge el Workbook que hay actualmente activo
obj_workbook := ole2.get_obj_property(obj_aplicacion,'ActiveWorkbook');

End nuevo_fichero;

Procedure cerrar_fichero(pruta in varchar2) is
arg_save OLE2.list_type;
Begin

if obj_workbook is not null then
arg_save := OLE2.CREATE_ARGLIST;
OLE2.ADD_ARG(arg_save, pruta);
ole2.invoke(obj_workbook,'SaveAs',arg_save); -- Guarda el fichero
-- Cierra el fichero
ole2.invoke(obj_workbook,'Close');
OLE2.Destroy_Arglist(arg_save);
OLE2.Release_Obj(obj_workbook);
obj_workbook := null;
end if;
End cerrar_fichero;

Procedure CerrarConexion is
id binary_integer;
Begin
if obj_aplicacion is null then
ExclError('Error: No se ha abierto ninguna sesión con Excel');
else

OLE2.Release_Obj(obj_workbooks);
ole2.invoke(obj_aplicacion,'Quit');
ole2.release_obj(obj_aplicacion);

obj_workbooks := null;
obj_aplicacion := null;
end if;
End CerrarConexion;
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:Problema al automatizar excel

Publicado por gloriam (1 intervención) el 10/10/2007 00:15:34
Hola, yo estoy tratando de generar desde forms 6i un archivo a excel, en office 2003 o 2007 funciona correctamente, pero en office 2000 no, me podrias indicar cual es el problema. Gracias
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:Problema al automatizar excel

Publicado por luis (1 intervención) el 19/05/2009 17:01:25
Fijate que el calculo para excel 2003 es de 256 la linea y en 2007 es 16384
tu problema tiene que ver con el tamaño del excel 2007
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