var
  XLApp: Variant;
  Sheet: Variant;
  i, j: Integer;
  filename: Tfilename;
const
  xlWBATWorksheet = -4167;
  wdDoNotSaveChanges = 0;
begin
  if Savedialog1.Execute then
    filename := Savedialog1.FileName
  else
    abort;
  XLApp := CreateOleObject('Excel.Application');
  XLApp.Visible := True;
  XLApp.Workbooks.Add[XLWBatWorksheet];
  XLApp.Workbooks[1].Worksheets[1].Name := 'sheet1';
  Sheet := XLApp.Workbooks[1].Worksheets['sheet1']; 
  for i := 1 to stringgrid18.RowCount do
      for j := 1 to stringgrid18.ColCount do
        Sheet.Cells[i, j] := stringgrid18.Cells[j - 1, i - 1];
  end
  else
  begin
    for i := 1 to stringgrid14.RowCount do
      for j := 1 to stringgrid14.ColCount do
        Sheet.Cells[i, j] := stringgrid14.Cells[j - 1, i - 1];
  end;
  if not VarIsEmpty(XLApp) then begin
    XLApp.DisplayAlerts := False; // Discard unsaved files....
    xlApp.ActiveWorkBook.SaveAs(filename);
//    XLApp.Quit;
  end;end;