Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Kann kein neues Excel-Arbeitsblatt(Worksheet) erstellen/hinzufügen (https://www.delphipraxis.net/171594-kann-kein-neues-excel-arbeitsblatt-worksheet-erstellen-hinzufuegen.html)

philubb 14. Nov 2012 10:58

Kann kein neues Excel-Arbeitsblatt(Worksheet) erstellen/hinzufügen
 
Klingt bestimmt einfach, aber ich verzweifele gerade daran, ein weiteres worksheet in mein excel-dokument einzufügen. Hab auch nirgends eine Lösung gefunden :|

Delphi-Quellcode:
  Template := EmptyParam;
  FLCID := LOCALE_USER_DEFAULT;

  ExcelAppEDM.Connect;
  ExcelAppEDM.Visible[FLCID] := True;
  ExcelAppEDM.caption := 'Inventarlisten Veränderungen';
  ExcelAppEDM.Workbooks.Add(Template, FLCID);

  ExcelWorksheetSchrott.ConnectTo(ExcelAppEDM.ActiveWorkbook.activeSheet as _Worksheet);
  ExcelWorksheetSchrott.Name := 'Inv. verschrottet';
 
  ExcelWorksheetTeilSchrott.ConnectTo(ExcelAppEDM.ActiveWorkbook.Sheets.Item[2] as _Worksheet);
  ExcelWorksheetTeilSchrott.Name := 'Inv. teil-verschrottet';
 
  ExcelWorksheetVerkauft.ConnectTo(ExcelAppEDM.ActiveWorkbook.Sheets.Item[3] as _Worksheet);
  ExcelWorksheetVerkauft.Name := 'Inv. verkauft';
 
  //hier kommt der Fehler
  ExcelWorksheetKST.ConnectTo(ExcelAppEDM.ActiveWorkbook.Sheets[4] as _Worksheet);
  ExcelWorksheetKST.Name := 'Kst. Änderung';

   ... WorkSheets füllen ...

  ExcelWorksheetSchrott.Disconnect;
  ExcelWorksheetTeilSchrott.Disconnect;
  ExcelWorksheetVerkauft.Disconnect;
  ExcelWorksheetKST.Disconnect;

  ExcelAppEDM.Disconnect;

Mit den ersten drei Aufrufen klappt es. Nur wenn ich das letzte

worksheet hinzufügen möchte, kommt der Fehler "Ungültiger Index"


Befüllen der einzelnen Worksheets kann ich auch. Scheitert echt nur daran, dass ich das letzte nicht noch mit in die Excel-Datei bekomme.

mjustin 14. Nov 2012 11:10

AW: Kann kein neues Excel-Arbeitsblatt(Worksheet) erstellen/hinzufügen
 
Zitat:

Zitat von philubb (Beitrag 1191094)

Delphi-Quellcode:

  //hier kommt der Fehler
  ExcelWorksheetKST.ConnectTo(ExcelAppEDM.ActiveWorkbook.Sheets[4] as _Worksheet);

Das vierte Worksheet existiert noch nicht, mit Sheets[4] wird es nicht erzeugt.

Mit Sheets.Add wird ein neues angelegt, dass danach auch mit Sheets[4] angesprochen werden kann.

Siehe auch:

http://www.delphipraxis.net/37480-ex...rnsteuern.html

Jumpy 14. Nov 2012 11:54

AW: Kann kein neues Excel-Arbeitsblatt(Worksheet) erstellen/hinzufügen
 
Alternativ mit
ExcelAppEDM.SheetsInNewWorkbook=4
vor
ExcelAppEDM.Workbooks.Add(Template, FLCID);
dafür sorgen, dass 4 neue Sheets in dem leeren Workbook bereitstehen.

philubb 14. Nov 2012 12:00

AW: Kann kein neues Excel-Arbeitsblatt(Worksheet) erstellen/hinzufügen
 
Danke.
Jetzt klappt alles :thumb:



Heißt das, dass von Anfang an immer nur 3 sheets existieren?
Gut zu wissen. :-D

Hab gedacht, dass ist egal, wie viele am Anfang existieren.

wilbo 14. Nov 2012 13:33

AW: Kann kein neues Excel-Arbeitsblatt(Worksheet) erstellen/hinzufügen
 
Hallo philubb

Als echte Alternative wäre FLEXCEL STUDIO con TMS Software geeignet.
Ist einfach zu begreifen und spart zusätzlich auf dem erstellenden Rechner eine Excel Installation (Kosten:P)

Gruß Wilfried

Gollum 15. Nov 2012 08:54

AW: Kann kein neues Excel-Arbeitsblatt(Worksheet) erstellen/hinzufügen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von philubb (Beitrag 1191103)
Danke.
Heißt das, dass von Anfang an immer nur 3 sheets existieren?

Nein, heisst es nicht. Dieses Verhalten kann man im Optionsdialog von Excel einstellen. Bei mir ist dort standardmäßig nur 1 Sheet eingestellt.

Jumpy 16. Nov 2012 08:27

AW: Kann kein neues Excel-Arbeitsblatt(Worksheet) erstellen/hinzufügen
 
Genau. Drei ist aber glaub ich die Einstellung, mit der Excel (früher) installiert wurde. Hättest do wie Gollum diese Einstellung irgendwann mal geändert, so hätte es bei dir schon bei der zweiten Zuweisung geknallt.

Es ist so wie ich das Verstanden habe auch so, dass die im Code gemachte Änderung: "...SheetsInNewWorkbook=4" nur für den Moment gültig ist und nicht die entsprechende Grundeinstellung von Excel ändert.


Alle Zeitangaben in WEZ +1. Es ist jetzt 22: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