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