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 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 20:44:59.
Responder Con Cita
  #2  
Antiguo 27-08-2015
shoulder shoulder is offline
Miembro
 
Registrado: abr 2008
Posts: 441
Poder: 17
shoulder Va por buen camino
Excel

Gracias era lo que me estaba fatando.

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


La franja horaria es GMT +2. Ahora son las 08:15:13.


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