Bom dia tente assim:
ExcelApp := CreateOleObject('Excel.Application'); ExcelApp.Visible := false; ExcelApp.DisplayAlerts := false; ExcelApp.WorkBooks.Add; for i := 1 to 3 do begin //ExcelApp.WorkBooks[1].WorkSheets.Add; Nao precisa desta linha, ja que existem automaticamente tres 'sheets' ExcelApp.WorkBooks[1].Worksheets[i].Name := IntToStr(i); alterar os nomes das tres 'sheets' existentes end; for i := 4 to 10 do begin ExcelApp.WorkBooks[1].WorkSheets.Add; ExcelApp.WorkBooks[1].Activesheet.Name := IntToStr(i); aqui usar Activesheet em vez de Worksheets[i] end; //i := i + 1; Este valor nao e usado ExcelApp.WorkBooks[1].WorkSheets.Add; ExcelApp.WorkBooks[1].Activesheet.Name := 'Final'; Testei este e funciona para mim. Espero ter ajudado .. .. Att. Steve -----Original Message----- From: delphi-br@yahoogrupos.com.br [mailto:delphi...@yahoogrupos.com.br]on Behalf Of m_abreuferreira Sent: 22 September 2009 23:28 To: delphi-br@yahoogrupos.com.br Subject: [delphi-br] [MAF] Exportar dados para Excel Pessoal, fiz um programa para exportar dados para o Excel. Preciso criar dentro do mesmo XLS várias Worksheets. Pelo programa que fiz ele cria uma a mais e não está colocando o nome delas corretamente. Alguém já teve algum problema parecido? Segue abaixo o programa que fiz. Marcos Ferreira unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ComObj; type TForm1 = class(TForm) Button1: TButton; procedure ExportDBGrid(toExcel: Boolean); procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.ExportDBGrid(toExcel: Boolean); var i: Integer; ExcelApp: Variant; begin if toExcel then begin ExcelApp := CreateOleObject('Excel.Application'); ExcelApp.Visible := false; ExcelApp.DisplayAlerts := false; ExcelApp.WorkBooks.Add; for i := 1 to 10 do begin ExcelApp.WorkBooks[1].WorkSheets.Add; ExcelApp.WorkBooks[1].WorkSheets[i].Name := IntToStr(i); end; i := i + 1; ExcelApp.WorkBooks[1].WorkSheets.Add; ExcelApp.WorkBooks[1].WorkSheets[i].Name := 'Final'; ExcelApp.Visible := true; end; end; procedure TForm1.Button1Click(Sender: TObject); begin ExportDBGrid(True); end; end. ------------------------------------ -- <<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>> *************************************************************************** This e-mail and any files transmitted with it are confidential. If you are not the intended recipient, any reading, printing, storage, disclosure, copying or any other action taken in respect of this e-mail is prohibited and may be unlawful. If you are not the intended recipient, please notify the sender immediately by using the reply function and then permanently delete what you have received. Content of emails received by this Trust will be subject to disclosure under the Freedom of Information Act 2000, subject to the specified exemptions, including the Data Protection Act 1998 and Caldicott Guardian principles. This footnote also confirms that, unless otherwise stated, this email message has been swept by Sophos Anti-virus for the presence of computer viruses. ***************************************************************************