![]() |
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. |
AW: Excel Ole Object
Excel.Sheets[1].Delete;
|
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. |
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 |
AW: Excel Ole Object
Auch das geht nicht kein Fehler , nix null reaktion
|
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?
|
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. |
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.... |
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. |
AW: Excel Ole Object
Delphi-Quellcode:
Excel.DisplayAlerts := False;
Workbook.WorkSheets[1].Delete; Excel.DisplayAlerts := True; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:24 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz