Contributor: STEVE GINN


{
>I am interested in any info regarding the use of OLE Automation
>in Delphi 2.0 . The demo programs provided with Delphi help
>at first, but I seem to have come upon major stumbling blocks,
>and the online help is skimpy on the subject. Specifically, I want
>to communicate with Microsoft Excel. Executing the following
>code:
>

I don't remember where I got this but it seems to work for me in my exercises of learning OLE Auto
with Excel:
}

unit Excel1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, OleAuto,
  StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    bFancyAry: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure bFancyAryClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}
var
   V: Variant;

procedure TForm1.Button1Click(Sender: TObject);
begin
   V := CreateOleObject('Excel.Sheet');
   V.Range('A1:D8').Formula := 'RAND()';
   V.Application.Sheets.Add;
   Caption := 'Num Sheets = ' + IntToStr(V.Application.Sheets.Count);
   ShowMessage('Excel Sheet Created');
end;

var
   A: Variant;
procedure TForm1.Button2Click(Sender: TObject);
begin
     A := CreateOleObject('Excel.Application'); //Start a new copy of Excel
     A.Visible := True;
     A.WorkBooks.Add;
     A.Sheets.Add;
     Caption := 'Num Sheets = ' + IntToStr(A.Sheets.Count);
end;

procedure TForm1.bFancyAryClick(Sender: TObject);
var
   i, j: Integer;
   Ch: Char;
   SimpAry: Variant;
begin
     SimpAry := CreateOleObject('Excel.Application'); //Start a new copy Excel
     SimpAry.Visible := True;
     SimpAry.WorkBooks.Add;
     SimpAry.Sheets.Add;
     for i := 1 to 10 do
         for j := 1 to 10 do
             SimpAry.Cells[j, i].Value := i * j;
     for i := 1 to 10 do begin
         Ch := Chr(64 + i);
         SimpAry.Cells[11, i].Value := Format('=Sum(%s1:%s10)', [Ch, Ch]);
end;
end;
end.