Ich habe eine Excel-Arbeitsmappe mit vielen, vielen Blättern. Ich möchte alle Blätter außer drei von ihnen löschen.löschen Excel Arbeitsblätter programmgesteuert
Insbesondere möchte ich wissen, ob es eine Möglichkeit gibt, die Blätter mit dem Blattnamen anstelle der Ordinalzahlen (Blattnummer) zu entfernen.
Ich benutze Excel Interop und C#, um mit Excel zu arbeiten.
Microsoft.Office.Interop.Excel.Application xlApp = null;
Excel.Workbook xlWorkbook = null;
Excel.Sheets xlSheets = null;
Excel.Worksheet xlNewSheet = null;
Das ist falsch, glaube ich. Sollten Sie nicht stattdessen in Ihrer Schleife nach unten gehen, da Sie aus der Sammlung von Arbeitsblättern löschen? 'für (int i = WorkSheets.Count; i> 1; i -)' –
Kein 'C#' -Experte außer 'xlApp.DisplayAlerts = false' usw. sollte sich außerhalb der Schleife befinden. – brettdj
Per @ KenWhites Kommentar, ja, du musst beim Löschen rückwärts loopen, sonst wirst du mit einem "i" außerhalb der Grenzen enden - wenn du sogar * ein * Arbeitsblatt löschst, wirst du nie in der Lage sein zu erreichen '.Worksheets.Count' seit dieser Zeit existiert dieser Blattindex nicht mehr in der 'Sheets'-Sammlung. Andernfalls können Sie eine 'Für jede wksheet'-Schleife erstellen und basierend auf dem' .Name' des Blattes löschen. –