![]() |
Delphi Excel Sheet Move()
Hallo :-D
und zwar baue ich gerade ein Excel Export Programm. Nun möchte ich ein Sheet an die letzte stelle schieben. So sollte, meines Wissens, der Code aussehen. Jedoch wird das Sheet immer auf die 1 Stelle generiert :cyclops: und ich versteh nicht warum. Kennt jemand eine andere Möglichkeit ein Sheet zu verschieben?
Code:
CurrentSheet.Move(Sheets[Sheets.Count-1]);
|
AW: Delphi Excel Sheet Move()
Wenn ich bei der Fernsteuerung von Excel, Word + Co. nicht so recht weiter weiß, mache ich die Aufgabe immer im zu steuernden Programm händisch und lasse gleichzeitig MakroAufzeichen mitlaufen.
Das Makro lasse ich mir dann anzeigen und übersetze mir dessen Quelltext nach Delphi. Das was das rauskommt ist regelmäßig etwas anders als erwartet. So scheint bei Excel die "Sheet-Zählung" bei 1 zu beginnen und nicht bei 0. Würde mal (ungetestet) behaupten, es müsste
Delphi-Quellcode:
heißen.
CurrentSheet.Move(Sheets[Sheets.Count]);
|
AW: Delphi Excel Sheet Move()
Das mit dem Makroaufzeichnen habe ich auch schon versucht, konnte den Code aber nicht in Delphi umsetzen.
Makroaufnahme:
Code:
Mit
Sheets("Juni-2017").Select
Sheets("Juni-2017").Move After:=Sheets(10)
Delphi-Quellcode:
kommt die Fehlermeldung: Listenindex überschreitet das Maximum.
CurrentSheet.Move(Sheets[Sheets.Count]);
|
AW: Delphi Excel Sheet Move()
Mal so probiert:
Delphi-Quellcode:
?
CurrentSheet.Move(Sheets.Count);
|
AW: Delphi Excel Sheet Move()
Zitat:
Hat jemand einen ganz anderen Ansatz bzw Funktion um ein Sheet zu verschieben? Wie gesagt, ich habe versucht das Makro in Delphi umzusetzen - vergeblich. |
AW: Delphi Excel Sheet Move()
Eigentlich müsste Dein Versuch so korrekt sein, die Frage ist, was ist denn in CurrentSheet?
Sprich: Zeig' uns bitte mal etwas mehr Quelltext, so dass wir nachvollziehen können wie Du das, was das Makro macht, im Quelltext nachvollzogen hast. |
AW: Delphi Excel Sheet Move()
Hallo zobien123,
hier mal Codefragment um Tabellenblätter an die erste oder letzte Stelle einzufügen. Zum Schluss wird das erste Tabellenblatt auf die letzte Stelle verschoben (Delphi: Berlin / Excel: 2016).
Delphi-Quellcode:
Bis bald Chemiker
procedure TForm1.btSheetLetzteStelleClick(Sender: TObject);
var oExcel: OLEVariant; oWB1: OLEVariant; oWS1: OLEVariant; oWS2: OLEVariant; oWS3: OLEVariant; oWS4: OLEVariant; aFileFormat: integer; letzteBlatt: integer; strName: String; begin try oExcel := CreateOleObject('Excel.Application'); except ShowMessage('Microsoft Excel kann nicht starten.'); exit; end; oExcel.Visible:= TRUE; // Workbook anlegen if (NOT VarIsEmpty(oExcel)) then begin oWB1:=oExcel.Workbooks.add; oExcel.Cells[1,1]:= 'das ist ein Test'; end; if ((NOT VarIsEmpty(oExcel))and(NOT VarIsEmpty(oWB1))) then begin // Wir legen mal ein neues WorkSheet an, es soll vor den ersten Sheet eingefügt // werden oWS1:= oWB1.Worksheets.add(before:= oWB1.WorkSheets[1]); oWS1.Name:= 'Blatt 1'; oWS2:= oWB1.Worksheets[2]; oWS2.Name:= 'Blatt 2'; oWS2.activate; ShowMessage('Blatt 2 aktiviert'); oWS1.activate; ShowMessage('Blatt 1 aktiviert'); // Wir legen 2 weitere Tabellenblätter an oWS3:= oWB1.Worksheets.add(after:= oWB1.WorkSheets[2]); oWS3.Name:= 'Blatt 3'; oWS4:= oWB1.Worksheets.add(after:= oWB1.WorkSheets[3]); oWS4.Name:= 'Blatt 4'; // Das letzte Tabellenblatt ermitteln letzteBlatt:= oWB1.WorkSheets.Count; ShowMessage('Letztes Blatt: '+inttostr(letzteBlatt)); // Erstes Tabellenblatt auf die letzte Stelle setzen oWB1.Worksheets['Blatt 1'].Move(after:= oWB1.WorkSheets[oWB1.WorkSheets.Count]); ShowMessage('Alles klar!'); end; // Ab hier muss alles wieder aufgeräumt werden. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:20 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