Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 26-08-2015
shoulder shoulder is offline
Miembro
 
Registrado: abr 2008
Posts: 441
Poder: 16
shoulder Va por buen camino
Excel no es liberado de memoria al final de un proceso de automatización con Delphi

Hola aunque use las sentencias que a continuacion escribire, si bien a la vista se cierra el archivo de excel con windows, pero si abro el administrador de tareas de windows veo como 20 excel.exe en los procesos (por cada vez que uso el excel desde delphi me queda un proceso colgado). Hay forma de cerrar completamente?.

Código Delphi [-]
appExcel := CreateOleObject('Excel.Application');
appExcel.WorkBooks.Open('C:\carpeta\hojas.xlsx');
appExcel.Cells.SpecialCells(xlCellTypeLastCell, EmptyParam).Activate;

..........


appExcel.Workbooks.Close;
appExcel.Quit;
appExcel := Unassigned;
Responder Con Cita
  #2  
Antiguo 26-08-2015
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
shoulder,

Cita:
Empezado por shoulder
...cada vez que uso el Excel desde Delphi me queda un proceso colgado...¿Hay forma de cerrar completamente?...


Revisa este código:
Código Delphi [-]
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Grids, ComObj, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  DataExcel : Array[0..4] of string = ('Data-1.xlsx','Data-2.xlsx','Data-3.xlsx','Data-4.xlsx','Data-5.xlsx');

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
const
   xlOpenXMLWorkbook =  51;

var
   Excel, WrkS, WrkB : OLEVariant;
   Row, Col : Integer;
   Rows, Cols : Integer;
   i : Integer;
   FileExcel : String;

begin

   try
      Excel := GetActiveOleObject('Excel.Application');
   except
      Excel := CreateOleObject('Excel.Application');
   end;

   Excel.DisplayAlerts := False;
   Excel.Visible := False;

   for i := Low(DataExcel) to High(DataExcel) do
   begin
      FileExcel := ExtractFilePath(ParamStr(0)) + DataExcel[i];
      WrkB := Excel.Workbooks.Open(FileExcel);
      WrkS := WrkB.Worksheets[1];

      Cols := WrkS.UsedRange.Columns.Count;
      Rows := WrkS.UsedRange.Rows.Count;

      Randomize;

      for Row:= 1 to Cols do
         for Col:= 1 to Rows  do
            WrkS.Cells[Col,Row] := Random(1000);

      WrkS.SaveAs(FileExcel,xlOpenXMLWorkbook);
      WrkB.Close;

      WrkS := Unassigned;
      WrkB := Unassigned;
   end;

   Excel.Quit;
   Excel := Unassigned;

end;

end.
El código anterior en Delphi 7 sobre Windows 7 Professional x32, Permite por medio de automatización abrir, actualizar, salvar y cerrar 5 Workbooks de Excel, con una sola copia de Excel 2010 en memoria y liberar todos los recursos al final del proceso.

Revisa esta información:
Espero sea útil

Nelson.

Última edición por nlsgarcia fecha: 26-08-2015 a las 21:44:59.
Responder Con Cita
  #3  
Antiguo 27-08-2015
shoulder shoulder is offline
Miembro
 
Registrado: abr 2008
Posts: 441
Poder: 16
shoulder Va por buen camino
Excel

Gracias era lo que me estaba fatando.

Código Delphi [-]
  Excel.Quit;    Excel := Unassigned;
Responder Con Cita
  #4  
Antiguo 06-07-2016
gusspagano gusspagano is offline
Miembro
 
Registrado: mar 2012
Posts: 47
Poder: 0
gusspagano Va por buen camino
Sólo para agradecer a todos en este foro, aunque no preguntes nada encuentras solución a muchas cuestiones.

El código funciona a la perfección en window 10, con delphi XE8 y excel 2013.

Saludos. /,,/
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
OLE Automatización de Excel r1d2m3 OOP 5 10-06-2011 19:59:45
¿Cómo puedo saber que se ha liberado toda la memoria usada? noob OOP 2 11-09-2008 00:51:17
Kubuntu feisty fawn final liberado Robert01 Linux 1 20-04-2007 07:45:01
Consejo Automatizacion Excel Builder C++ alt126 C++ Builder 0 14-04-2005 11:52:04


La franja horaria es GMT +2. Ahora son las 19:26:00.


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