Ver Mensaje Individual
  #6  
Antiguo 17-07-2013
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Reputación: 21
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
cmfab,

Cita:
Empezado por cmfab
...Tengo 5 archivos de Excel por separados y necesito unirlos en uno solo...
Revisa este código:
Código Delphi [-]
unit Unit1;

interface

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

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

var
  Form1: TForm1;

implementation

{$R *.dfm}

// Consolida Hojas de Cálculo en un solo Libro de Trabajo
procedure TForm1.Button1Click(Sender: TObject);

const
   // Formato Open XML Workbook
   xlOpenXMLWorkbook =  51;

   // Arreglo de Hojas de Cálculo a Consolidar
   FileExcel : Array[1..6] of String = ('TestCopy-1.xls', 'TestCopy-2.xls',
                                        'TestCopy-3.xls', 'TestCopy-4.xls',
                                        'TestCopy-5.xls', 'TestCopy-6.xls');
var
   Excel, WrkS : OleVariant;
   Sheet, Range : OleVariant;
   FileExcelInput : String;
   FileExcelOutput : String;
   i : Integer;

begin

   // Ruta del Libro de Trabajo Consolidado
   FileExcelOutput := ExtractFilePath(Application.ExeName) + 'TestCopyAll.xlsx';

   try

      // Borra la versión previa del Libro de Trabajo Consolidado
      if FileExists(FileExcelOutput) then
         DeleteFile(FileExcelOutput);

      // Crea una instancia de Automatización de Excel
      Excel := CreateOleObject('Excel.Application');

      // Configura parámetros de ejecución de Excel
      Excel.DisplayAlerts := False;
      Excel.Visible := False;

      // Crea el Libro de Trabajo Consolidado
      Excel.Workbooks.Add(-4167);
      WrkS := Excel.Worksheets[1];
      WrkS.Name := 'None';
      WrkS.SaveAs(FileExcelOutput,xlOpenXMLWorkbook);

      // Consolida las hojas de cálculo del arreglo FileExcel en un solo Libro de Trabajo
      for i := High(FileExcel) downto Low(FileExcel) do
      begin

         // Abre el Libro de Trabajo Consolidado
         Excel.Workbooks.Open(FileExcelOutput);

         // Adiciona una hoja de cálculo vacía
         WrkS := Excel.Worksheets.Add();

         // Asigna un nombre a la hoja de cálculo
         WrkS.Name := 'Sheet-' + IntToStr(i);

         // Asigna una hoja de cálculo a consolidar como Input
         FileExcelInput := ExtractFilePath(Application.ExeName) + FileExcel[i];

         // Abre la hoja de Input
         Sheet := Excel.Workbooks.Open(FileExcelInput);

         // Copia todo el contenido de la hoja de Input (Solo la primera hoja de cálculo a efectos de este ejemplo)
         Range := Sheet.Worksheets[1].UsedRange.Copy;

         // Adiciona la hoja de Input en el Workbook de Output
         WrkS.Range['A1'].PasteSpecial(Range);

         // Salva WrkS Consolidado
         WrkS.SaveAs(FileExcelOutput,xlOpenXMLWorkbook);

      end;

      MessageDlg('Consolidado de Hojas de Cálculo de Excel Creado Satisfactoriamente', mtinformation, [mbok], 0);

   finally

      // Finaliza la automatización de Excel y libera recursos
      Excel.Quit;
      Excel := Unassigned;
      WrkS := Unassigned;
      Sheet := Unassigned;

   end;

end;

end.
El código anterior genera un Libro de Trabajo Consolidado en Excel con la información de 6 hojas de cálculo (La primera hoja de cada una sin importar su estructura) por medio de Automatización de Excel con Delphi 7 y Excel 2010.

Espero sea útil

Nelson.

Última edición por nlsgarcia fecha: 17-07-2013 a las 10:53:22.
Responder Con Cita