codice:
procedure TForm5.btnstampaClick(Sender: TObject);
var Rec:TBase;
    NL:TFile;
    Pag:TPagina;
    Sorgente,Destinazione: file of Byte;
    By:Byte;
    ExcelAppl:Variant;
begin
   //inizio copia file ---------
   AssignFile(Sorgente,'modulo_f23.xls');
   Reset(Sorgente);
   AssignFile(Destinazione,'temp.xls');
   Rewrite(Destinazione);
   while not eof(Sorgente) do begin
      read(sorgente,By);
      write(Destinazione,By);
      progbar.StepIt;
   end;
   closefile(Sorgente);
   closefile(Destinazione);
   // fine copia file ----------

   ExcelAppl:=CreateOleObject('Excel.Application');
   ExcelAppl.WorkBooks.Open('E:\Domus\PROGRAMMA\temp.xls');

   //inserisco tutti i vari campi
           .
           .
           .
   //fine inserimento

   //inizio data
   Bazze:=DateToStr(Date);
   ExcelAppl.Range[Ix+'44']:=bazze[4];
   ExcelAppl.Range[Kx+'44']:=bazze[5];

   ExcelAppl.Range['M44']:=bazze[7];
   ExcelAppl.Range['O44']:=bazze[8];
   ExcelAppl.Range['Q44']:=bazze[9];
   ExcelAppl.Range['S44']:=bazze[10];
   //fine data

   if printdialog.Execute
      then begin
       //qui non so cosa mettere
      end;

   AssignFile(Destinazione,'temp.xls');
   Erase(Destinazione);
in questo codice io copio un file di excel, sostituisco i campi che mi servono, lo mando in stampa (che però non so come fare), e poi elimino il file temporaneo cosi creato