Hallo!
Ich bin seit gut einer Woche ein angehender Delphi-Programmierer und versuche mich an einem eispielprogramm, mit dem ich versuchen will, Excel durch ein Delphi-Programm fernzusteuern.
Folgendes Problem:
Ich will über mehrere Prozeduren hinweg auf das selbe sheet zuzugreifen, was mir nicht gelingt. In diesem eispiel will ich bei Start des Programms eine neues Workbook mit einem Sheet namens '
DP Sheet' erstellen, wenn ich auf dem Button klicke sollen Werte eingetragen werden und bei Schließung des Programms soll die Datei in eine vordefinierte Datei gespeichert werden. Das ist alles ein wenig sinnlos, ich weiß, aber es ist ja auch nur ein Test, um mein Wissen zu erweitern und mich auf die ultimative Aufgabe vorzuereiten
. Wenn ich alle Anweisungen in einer Prozedur schreien würde, klappt es. So, wie das Programm unten ausgeführt ist, klappt es nicht. Bitte um Hilfe!
Delphi-Quellcode:
unit Test1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComObj, StdCtrls;
type
TForm1 =
class(TForm)
Button1: TButton;
procedure ExcelFuellen(Sender: TObject);
procedure Start_Prog(Sender: TObject);
procedure Exit_Prog(Sender: TObject;
var Action: TCloseAction);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
procedure TForm1.Start_Prog(Sender: TObject);
var
Excel : Variant;
begin
Excel:= CreateOleObject('
Excel.Application');
excel.Application.SheetsInNewWorkBook := 1;
Excel.Workbooks.Add;
Excel.Sheets[1].
Name := '
DP Sheet';
excel.visible := true;
end;
Procedure TForm1.ExcelFuellen(Sender: TObject);
var
Excel : Variant;
row, column: Integer;
begin
Excel:= CreateOleObject('
Excel.Application');
row := 1;
column := 2;
Excel.Sheets['
DP Sheet'].Cells[row,column].Value := '
Hallo';
Excel.Sheets['
DP Sheet'].Cells[1,3].value := 5.23;
end;
procedure TForm1.Exit_Prog(Sender: TObject;
var Action: TCloseAction);
var
Excel : Variant;
begin
Excel:= CreateOleObject('
Excel.Application');
Excel.ActiveWorkbook.SaveAs('
D:\Excel_Ablage\Test1.xls');
Excel.Quit;
Excel := Unassigned;
end;
{$R *.dfm}
end.