批量删除未使用的 Excel 自定义样式。怎么做?

批量删除未使用的 Excel 自定义样式。怎么做?

我继承了某人的包含多个工作表的 Excel 工作簿,并发现我遇到的问题是由于自定义样式过多造成的。

这个微软 hep 文件宏有超过 5000+ 种样式

Sub styles()
For i = 1 To ActiveWorkbook.styles.Count
    Worksheets(1).Cells(i, 1) = ActiveWorkbook.styles(i).Name
Next
End Sub

我正在尝试删除所有自定义(奇怪的)样式,但保留默认/标准样式。

我搜索了如何批量删除,并在论坛中不断找到类似风格的宏。我选择了下面的一个,但不幸的是,这一行mpStyle.删除导致错误:

Sub ClrStyles()
 Dim mpStyle As Style
  For Each mpStyle In ActiveWorkbook.Styles
   If Not mpStyle.BuiltIn Then
    mpStyle.Delete
   End If
  Next mpStyle
End Sub

返回的错误是:样式类的删除方法失败。

我在 Excel 2010 中工作,Style 类确实具有删除功能,所以我很困惑为什么它不起作用。

有任何想法吗?

答案1

我使用了错误的实际名称,并设法在 StackOverflow 中找到了这篇帖子:删除单元格样式中的未知格式

附加行mpStyle.Locked = FALSE解决了我的问题。

完整代码如下:

Sub ClrStyles()
 Dim mpStyle As Style
  For Each mpStyle In ActiveWorkbook.Styles
   If Not mpStyle.BuiltIn Then
    mpStyle.Locked = FALSE
    mpStyle.Delete
   End If
  Next mpStyle
End Sub

答案2

解锁已锁定的样式解决了该错误。

这是替代代码

Sub StyleClean()
    Dim N As Long, i As Long
    Dim inSc, ninSc As Boolean

    With ActiveWorkbook
        N = .Styles.Count
        inSc = True

        For i = N To 1 Step -1
            inSc = .Styles(i).BuiltIn
            ninSc = Not inSc
            If ninSc Then
                .Styles(i).Locked = False
                .Styles(i).Delete
            End If
       Next i
    End With
End Sub

相关内容