Universal (dynamic) types

uses System.Win.ComObj;

var
  Excel, Sheet: Variant;
begin
  //create simple Excel table
  Excel := CreateOleObject(
    'Excel.Application');
  Excel.Workbooks.Add;

  Sheet := Excel.ActiveSheet;
  Sheet.Cells[11] := 3;
  Sheet.Cells[21] := 5;
  Sheet.Cells[31] :=
    '=sum(R[-2]C[0]:R[-1]C[0])';

  //all calls are late bound: the
  //names are resolved by IDispatch
  Excel.Visible := True;
end.