Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Excel Ole Object (https://www.delphipraxis.net/152218-excel-ole-object.html)

afamaus 15. Jun 2010 14:55


Excel Ole Object
 
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.

Bummi 15. Jun 2010 15:28

AW: Excel Ole Object
 
Excel.Sheets[1].Delete;

afamaus 15. Jun 2010 15:48

AW: Excel Ole Object
 
Erstmal Danke aber das klappt nicht. Es kommt zwar kein Fehler aber das Sheet ist immer noch da.
Ich habe auch schon versucht dem sheet einen Namen zu geben und es darüber zu löschen aber es passiert einfach nix. Und das ist ärgerlich wenn das noch klappen würde wäre das Programm bis auf ein paar details fertig.

Bummi 15. Jun 2010 15:52

AW: Excel Ole Object
 
Seltsam funtioniert bei mir Office 2007

ansonsten Makro aufzeichnen un reinschauen, gegf. bekomst Du hierbei auch hilfreiche Fehlermeldungen, "Dokument geschützt" o.ä.

Sheets("Tabelle1").Select
ActiveWindow.SelectedSheets.Delete

afamaus 15. Jun 2010 16:45

AW: Excel Ole Object
 
Auch das geht nicht kein Fehler , nix null reaktion

Bummi 15. Jun 2010 16:49

AW: Excel Ole Object
 
Hast Du mal die Exceldatei nach erstellung geöffnet, den Macrorecorder angeschmissen und versucht das Sheet zu löschen und Dir hierbei den Makrocode angeschaut?

afamaus 15. Jun 2010 16:59

AW: Excel Ole Object
 
ja hab ich der quellcode ist der gleiche wie der den du mir gegeben hast. Aber leider wie gesagt keine
regung.

Bummi 15. Jun 2010 17:04

AW: Excel Ole Object
 
wenn es dann nicht an der Stelle im Code
, gegf. noch einem
Sleep;Application.processmessages
liegt bin ich mit meinem Latein am Ende....

afamaus 15. Jun 2010 18:08

AW: Excel Ole Object
 
also das ging auch nicht aber ich hab noch ne vermutung. Wenn ich excel starte und ein tabellenblatt
löschen will dann kommt noch mal nen Fenster wo er fragt ob ich das tabellenblatt wirklich löschen will denn es könne wichtige daten enthalten. Vielleicht hängt er sich an der stelle auf.

toms 15. Jun 2010 19:30

AW: Excel Ole Object
 
Delphi-Quellcode:
Excel.DisplayAlerts := False;
Workbook.WorkSheets[1].Delete;
Excel.DisplayAlerts := True;


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:48 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz