2010-08-25 7 views
3

Je souhaite supprimer une feuille de calcul si elle ne contient aucun objet de type données/graphiques/images/dessin/hyperliens ou tout autre objet incorporé.Excel Automation: Identification et suppression des feuilles de calcul vides

Je trouve la solution de détection et de suppression des feuilles vierges s'il n'y a pas de données dans les cellules en utilisant le code suivant: -

si (Worksheet_Function- $> COUNTA (feuille de $ -> {cellules}) == 0) { $ feuille-> Supprimer; }

mais il supprime également la feuille s'il existe des graphiques ou des objets non textuels.

Est-il possible d'identifier et de supprimer des feuilles si elles sont complètement vides?

Répondre

1

supprimera la feuille s'il n'y a que la mise en forme, mais cela devrait faire ce que vous demandez

Sub chksheet() 
Dim wks As Worksheet 
Application.DisplayAlerts = False 

For Each wks In ActiveWorkbook.Worksheets 

If WorksheetFunction.CountA(Cells) = 0 And wks.DrawingObjects.Count = 0 Then 
    wks.Delete 
    Else 
    MsgBox ("has stuff") 'or do nothing here and skip this sheet 
    End If 
Next wks 

Set wks = Nothing 
    Application.DisplayAlerts = True 
End Sub 
1

Vous pouvez être plus complet et passer par tous les objets liés que vous souhaitez tester

Option Explicit 

Sub test() 
Dim WS As Worksheet 

For Each WS In ThisWorkbook.Worksheets 
    With WS 
     'default usedrange = 1 so check cell A1 is also empty 
     If .UsedRange.Count = 1 And IsEmpty(.Cells(1, 1).Value) _ 
      And .UsedRange.Column = 1 _ 
      And .UsedRange.Row = 1 _ 
      And .Comments.Count = 0 _ 
      And .Shapes.Count = 0 _ 
      And .Hyperlinks.Count = 0 _ 
      And .ListObjects.Count = 0 _ 
      And .OLEObjects.Count = 0 _ 
      And .Names.Count = 0 _ 
      And .QueryTables.Count = 0 _ 
      And .SmartTags.Count = 0 Then 

      MsgBox ("BLANK") 
      'WS.delete 
     Else 
      MsgBox ("NOT BLANK") 
     End If 

     End With 
Next WS 
End Sub 
Questions connexes