Caros, boa noite!

Estou com o seguinte problema: o código abaixo deveria ser capaz de
imprimir dados em um arquivo Excel, no Delphi .NET:

type
TExportarGrid = class helper for TStringGrid
procedure ExportarGridExcel(Arquivo :String);
end;

implementation

uses
Dialogs, uFuncoes;

{ TExportarGrid }

procedure TExportarGrid.ExportarGridExcel(Arquivo: String);
var Linha, Coluna :integer;
Arq :TextFile;
ExcelApp :Excel._Application;
ExcelWorkBook :Excel._Workbook;
ExcelWorkSheet :Excel._Worksheet;
begin
if Self.RowCount > 1 then
begin
try
try
//Remove o arquivo, caso ele exista
//AssignFile(Arq, Arquivo);
//Erase(Arq);

ExcelApp := Excel.ApplicationClass.Create;
//ExcelApp.Visible := True;
ExcelWorkBook :=
Excel._Workbook(ExcelApp.Workbooks.Add(Excel.XlWBATemplate.xlWBATWorksheet));
ExcelWorkSheet :=
Excel._Worksheet(ExcelWorkBook.Sheets[TObject(1)]);

ExcelWorkSheet.Activate;

Linha := 0;

for Coluna := 0 to Self.ColCount - 1 do
begin
ExcelWorkSheet.Cells[TObject(Linha + 1), TObject(Coluna +
1)] := removerQuebraLinha(Self.Cells[Coluna, Linha]);
end;

Linha := 1;

while Linha <= Self.RowCount - 1 do
begin
for Coluna:=0 to Self.ColCount - 1 do
begin
ExcelWorkSheet.Cells[TObject(Linha + 1), TObject(Coluna +
1)] := removerQuebraLinha(Self.Cells[Coluna, Linha]);
end;
Linha := Linha + 1;
end;

ExcelWorkBook.SaveAs(arquivo,
Excel.XlFileFormat.xlWorkbookNormal, nil, nil,
TObject(false), TObject(false),
Excel.XlSaveAsAccessMode.xlNoChange,
Excel.XlSaveConflictResolution.xlLocalSessionChanges,
nil, nil, nil,
nil);
except
end;
finally
ExcelWorkBook.Close(TObject(false), nil, nil);
ExcelApp.Quit;

FreeAndNil(ExcelApp);
FreeAndNil(ExcelWorkBook);
FreeAndNil(ExcelWorkSheet);
end;

end
else
ShowMessage('A Grid '+Self.Name+'tem que possuir valor para a
migração.');
end;

Esse código está funcionando corretamente em algumas máquinas. Em
outras, não. Até o momento, a única diferença que vi entre as essas
máquinas é a existência de uma versão do Code Gear Studio 2007
instalada. Ou seja, tanto faz compilar esse código utilizando o
Borland Developer Studio 2006 ou Code Gear Studio 2007, o código
funciona perfeitamente, exceto nas máquinas onde o Code Gear Studio
2007 está instalado. Nessas máquinas, ocorre o seguinte erro: 

"Falha na recuperação de factory de classes COM do componente com
CLSID {00024500-0000-0000-C000-000000000046} devido ao seguinte erro:
80070005."

Alguém já teve esse problema, ou pode me sugerir outra solução?

Grato desde já,

Wellington
Analista de Sistemas


Responder a