Pues eso, tengo un procedimiento que funcionaba perfectamente, hasta ahora, antes me creaba el archivo en segundo, despúes ya no lo hace, luego no me crea el archivo lanzandome el siguiente error:
---------------------------
Debugger Exception Notification
---------------------------
Project SisAuto.exe raised exception class EOleException with message 'Cannot access 'Inventario.xlsx''.
---------------------------
Break Continue Help
---------------------------
Este es el código:
procedure TFInvGeneral.exportToExcel(FileName: string; AData: TFDQuery); var ExcelApp, Libro: Variant; Nombre : string; fila, i, j :integer; Columnas: TStringList; begin Columnas := TStringList.Create; Columnas.Add('Código'); Columnas.Add('Referencia'); Columnas.Add('Insumo/Pieza'); Columnas.Add('Marca'); Columnas.Add('Existencia'); Columnas.Add('Condición'); Columnas.Add('Area'); Columnas.Add('Costo'); svGuardar.Title := 'Exportando Reporte a Excel'; svGuardar.DefaultExt := 'xlsx'; svGuardar.FileName := FileName +'.xlsx'; svGuardar.Filter := 'Archivos Excel (*.xlsx)|*.xlsx'; svGuardar.FilterIndex := 1; try svGuardar.Execute; if (svGuardar.FileName <> '') then begin //Deshabilitamos los controles AData.DisableControls; ExcelApp := CreateOleObject('Excel.Application'); Nombre := 'Inventario'; ExcelApp.DisplayAlerts := false; //Comienzo a llenar las celdas // crea el archivo ExcelApp.WorkBooks.Add(); // Nombre de la Hoja ExcelApp.WorkBooks[1].ActiveSheet.Name := Nombre; // trabajo sobre la hoja Libro := ExcelApp.WorkBooks[1].ActiveSheet; // Orientación de pagina Libro.PageSetup.Orientation := 1; // 1-vertical; 2-horiz // Fila sobre la que esta por escribir fila := 1; //Agregamos las columnas for i:= 0 to Columnas.count - 1 do begin Libro.Cells[fila,i+1] := Columnas.Strings[i]; Libro.Cells[fila,i+1].Font.Bold := True; Libro.Cells[fila,i+1].font.Size := 12; Libro.Cells[fila,i+1].font.Color := clWhite; Libro.Cells[fila,i+1].Interior.Color := clGray ; Libro.Cells[fila,i+1].HorizontalAlignment := -4108; //Centralizamos end; // Fila siguiente inc(fila); AData.First; for i:= 1 to AData.RecordCount do begin for j:= 0 to Columnas.Count-1 do begin case AData.Fields[J].DataType of ftAutoInc, ftBytes, ftInteger, ftSmallint, ftWord: // Auto o Numérico begin Libro.Cells[fila,j+1].NumberFormat := '0'; Libro.Cells[fila, J +1] := AData.Fields[J].AsInteger; end; ftBCD, ftFloat, ftCurrency: // Numérico con decimales begin Libro.Cells[fila,j+1].NumberFormat := '0.00'; Libro.Cells[fila, J +1] := AData.Fields[J].AsFloat; end; ftDateTime, ftDate, ftTime: // Fecha y Hora begin Libro.Cells[fila, J +1] := AData.Fields[J].AsDateTime; end; else begin Libro.Cells[fila,j+1].NumberFormat := RPad('0', '0', Length(AData.Fields[J].AsString)); Libro.Cells[fila,J+1]:= AData.Fields[J].AsString ; end; end; end; AData.Next; // Fila siguiente inc(fila); // automatizar ancho de columnas Libro.Cells.Columns.AutoFit; // Guarda y cierra el archivo Libro.SaveAs(FileName); ExcelApp.Visible := True; end; end; except ExcelApp.Quit; showmessage('No se pudo crear el Archivo Excel.'); raise; end; Columnas.Free; end;
Saludos..