我继承了某人的包含多个工作表的 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