AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Excel Ole Object

Ein Thema von afamaus · begonnen am 15. Jun 2010 · letzter Beitrag vom 16. Jun 2010
Antwort Antwort
Seite 1 von 2  1 2      
afamaus

Registriert seit: 15. Jun 2010
6 Beiträge
 
Delphi 2 Desktop
 
#1

Excel Ole Object

  Alt 15. Jun 2010, 14: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 07:39 Uhr) Grund: Code-Tag durch Delphi-Tag ersetzt, Delphi als Sprache eingestellt
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#2

AW: Excel Ole Object

  Alt 15. Jun 2010, 15:28
Excel.Sheets[1].Delete;
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
afamaus

Registriert seit: 15. Jun 2010
6 Beiträge
 
Delphi 2 Desktop
 
#3

AW: Excel Ole Object

  Alt 15. Jun 2010, 15:48
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.
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#4

AW: Excel Ole Object

  Alt 15. Jun 2010, 15:52
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
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
afamaus

Registriert seit: 15. Jun 2010
6 Beiträge
 
Delphi 2 Desktop
 
#5

AW: Excel Ole Object

  Alt 15. Jun 2010, 16:45
Auch das geht nicht kein Fehler , nix null reaktion
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#6

AW: Excel Ole Object

  Alt 15. Jun 2010, 16:49
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?
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
afamaus

Registriert seit: 15. Jun 2010
6 Beiträge
 
Delphi 2 Desktop
 
#7

AW: Excel Ole Object

  Alt 15. Jun 2010, 16:59
ja hab ich der quellcode ist der gleiche wie der den du mir gegeben hast. Aber leider wie gesagt keine
regung.
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#8

AW: Excel Ole Object

  Alt 15. Jun 2010, 17:04
wenn es dann nicht an der Stelle im Code
, gegf. noch einem
Sleep;Application.processmessages
liegt bin ich mit meinem Latein am Ende....
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
afamaus

Registriert seit: 15. Jun 2010
6 Beiträge
 
Delphi 2 Desktop
 
#9

AW: Excel Ole Object

  Alt 15. Jun 2010, 18:08
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.
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#10

AW: Excel Ole Object

  Alt 15. Jun 2010, 19:30
Delphi-Quellcode:
Excel.DisplayAlerts := False;
Workbook.WorkSheets[1].Delete;
Excel.DisplayAlerts := True;
Thomas

Geändert von toms (15. Jun 2010 um 19:33 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:45 Uhr.
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