在Excel中删除我无法访问的表

我试图删除由于某种原因,我无法访问的工作表。 每当我想访问它,它崩溃的Excel。 我正在使用下面的macros来删​​除closures时不需要的工作表(以“SHEET”开头的所有工作表)都将在closures时被删除。 所以我想我可以使用相同的macros,并将“SHEET”更改为“CHART”,但由于某种原因,macros不能识别工作簿中名为“CHART1”的工作表,因此不需要的工作表会保留在此处。 由于它使工作簿每次崩溃

有没有办法,我可以删除这张表,另一个macros也许?

这是我目前用来删除图表的macros:

Private Sub Workbook_Deactivate() Dim sh As Worksheet Dim flg As Boolean For Each sh In Worksheets If sh.Name Like "Chart*" Then flg = True: Exit For Next If flg = True Then Call Delete_NEW_Unwanted_CHART End If If ThisWorkbook.Saved = False Then ThisWorkbook.Save End If End sub 

在一个模块中我有:

 Sub Delete_NEW_Unwanted_CHART() Dim ws As Worksheet For Each ws In ThisWorkbook.Charts If Left(ws.Name, 5) = "Chart" Then Application.DisplayAlerts = False ws.Delete Application.DisplayAlerts = True End If Next ws End Sub 

当我运行这个断点时,它甚至不认识到我有一张名为“CHART1”的工作表。 这就好像这张图表的标志永远不被识别。

您已经将ws声明为工作表,然后通过一系列图表(有效地针对工作簿中的每个工作表中的工作表进行循环 – 这没有意义),请尝试For Each ws In ThisWorkbook.Sheets参数和Next

其实我只是发现它有什么问题。 如果任何人在将来有这个问题,这是适当的macros:

 Private Sub Workbook_Deactivate() For Each shC In Charts If shC.Name Like "Chart*" Then flg = True: Exit For Next If flg = True Then Call Delete_NEW_Unwanted_CHART End If If ThisWorkbook.Saved = False Then ThisWorkbook.Save End If End sub 

在模块写:

 Sub Delete_NEW_Unwanted_CHART() Dim wsC As Chart For Each wsC In ThisWorkbook.Charts If Left(wsC.Name, 5) = "Chart" Then Application.DisplayAlerts = False wsC.Delete Application.DisplayAlerts = True End If Next wsC End Sub 

祝大家拥有美好的一天 :-)

为什么不呢?

 Private Sub Workbook_Deactivate() Dim sh As Chart Dim flg As Boolean For Each sh In Charts If Left(sh.Name, 5) = "Chart" Then Application.DisplayAlerts = False sh.Delete Application.DisplayAlerts = True End If Next If ThisWorkbook.Saved = False Then ThisWorkbook.Save End If End Sub