Registriert seit: 15. Jun 2010
6 Beiträge
Delphi 2 Desktop
|
Excel Ole Object
15. Jun 2010, 15:55
Hallo Ich bin neu hier im Forum.
Ich habe ein kleines Programm für meinen Arbeitskollegen geschrieben um Daten in einer Excel Tabelle zu sortieren und in einem neuen Sheet abzulegen. Das geht auch alles super, mein problem ist nur das ich nicht rausbekommen habe wie ich das alte sheet löschen kann, also das am Ende nur noch eine Tabelle mit den sortierten Daten in der xls datei ist. hier mal mein Quellcode
vielleicht hat ja einer ne Lösung für mich parat Gruß afamaus
Delphi-Quellcode:
var
Form1: TForm1;
Workbook,Filename, Excel: OleVariant;
a,i,y:integer;
implementation
{$R *.dfm}
procedure TForm1.Beenden1Click(Sender: TObject);
begin
close;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
//öffnen der Excel Datei
OpenDialog1:=TOpenDialog.Create(Self);
try
OpenDialog1.InitialDir:=ExtractFilePath(Application.ExeName);
OpenDialog1.Filter:='*.xlsm';
if OpenDialog1.execute then begin
try
//Excel.Visible:=true;
Filename:=OpenDialog1.Filename;
Workbook:=Excel.Workbooks.open(filename,emptyparam);
Label2.Caption:=Opendialog1.Filename + ' wurde erfolgreich geladen';
except
end;
end
finally
openDialog1.free;
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
l1.Visible:=true;
//makro
excel.sheets[2].cells[1,1].value:='Name';
excel.sheets[2].cells[1,2].value:='Straße';
excel.sheets[2].cells[1,3].value:='Postleitzahl';
excel.sheets[2].cells[1,4].value:='Ort';
excel.sheets[2].cells[1,5].value:='Telefon';
excel.sheets[2].cells[1,6].value:='Einweisungen';
a:=13;
y := 2;
For i := 14 To 1500 do
begin
excel.sheets[2].cells[y,1].value:=excel.sheets[1].cells[a,2].value; //Name
excel.sheets[2].cells[y,2].value:=excel.sheets[1].cells[a + 1,2].value; //Ort
excel.sheets[2].cells[y,3].value:=excel.sheets[1].cells[a + 2,2].value; //Straße
excel.sheets[2].cells[y,4].value:=excel.sheets[1].cells[a,5].value; //Postleitzahl
excel.sheets[2].cells[y,5].value:=excel.sheets[1].cells[a+2,12].value; //Telefon
excel.sheets[2].cells[y,6].value:=excel.sheets[1].cells[a+3,12].value; //Einweiser
a := a + 6 ;
y:=y+1;
End;
l1.Visible:=false;
excel.sheets[2].name:='SAP-Statistik';
showmessage('Daten wurden ausgelesen und in SAP-Statistik.xls geschrieben und auf dem Desktop abgelegt');
//Makro ende
//speichern und schließen
Workbook.SaveAs('C:\Users\Hoffmann\Desktop\SAP_Statistik.xls',EmptyParam ,EmptyParam,EmptyParam,EmptyParam,
EmptyParam,False,EmptyParam,EmptyParam,GetUserDefaultLCID);
Excel.Workbooks.close;
Excel.Quit;
Excel:=unassigned;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Excel:=CreateOleObject('Excel.Application');
end;
end.
Geändert von SirThornberry (16. Jun 2010 um 08:39 Uhr)
Grund: Code-Tag durch Delphi-Tag ersetzt, Delphi als Sprache eingestellt
|