2016-04-06 6 views
0

Ich benutze VB.net, um eine Liste von Arbeitsblättern zu löschen, deren Namen in einem Listenfeld erscheinen.Bestimmte Arbeitsblätter mit VB.net deaktivieren

Während meiner Recherche fand ich zwei Möglichkeiten, um Elemente zu löschen.

1) CType (objWorkBook.Sheets ("Sheetname"), Excel.Worksheet) .Delete()

2) objWorkSheets.Delete()

Die Schleife, die I unten gezeigt verwenden:

For i As Integer = 0 To workbook_worksheets.Items.Count - 1 

Next 

Wenn ich die 1) verwenden, das nicht gelöscht nichts tun und für 2) ich weiß nicht, wie die Namen die Funktion zugewiesen werden, so dass nur die spezifische Arbeitsblatt gelöscht.

Danke

Antwort

1

Wenn Sie COM-Schnittstellen zu Excel verwenden Ihre Arbeitsmappe ändern Sie können so etwas tun (von here):

Application.DisplayAlerts=False 
For Each ws in Sheets 
    If ws.Name = "Master" Then ws.delete 
Next 
Application.DisplayAlerts=True 

COM ist allerdings ziemlich langsam mit Excel für die Interaktion , und Sie müssen sich mit allen Fiddly-Bits der Benutzeroberfläche wie DisplayAlerts beschäftigen, um Bestätigungsdialoge und ähnliches zu aktivieren/deaktivieren. Sie sollten eine Bibliothek wie EEPlus verwenden, um xlsx- und xlsm-Dateien ohne COM zu erstellen/bearbeiten. (Dies bedeutet auch, Ihre Anwendung auf einer Maschine ohne Excel oder mit verschiedenen Versionen von Excel usw. ausführen kann)

Mit EEPlus es etwa so aussehen würde:

Dim workbookFileInfo = New FileInfo("Workbook.xlsx") 
Using excelPackage = New ExcelPackage(workbookFileInfo) 
    Dim worksheet = excelPackage.Workbook.Worksheets.SingleOrDefault(Function(x) x.Name = "Worksheet1") 
    excelPackage.Workbook.Worksheets.Delete(worksheet) 
    excelPackage.Save() 
End Using 
+0

Ihnen sehr danken, die perfekt gearbeitet. –

+0

Sicher Sache. Froh, dass ich Helfen kann. – nickvans

Verwandte Themen