여러 사람의 손을 거친 MS Excel 파일에선 온갖 예측할 수 없는 일들이 벌어지곤 한다.
그 중 특이한 경우 중 하나가 스타일이 깨지는 것.
보통의 Excel 파일에서 스타일 탭을 클릭하면 아래와 비슷한 모습을 볼 수 있다.
하지만, (특히 회사에서) 여러 사람의 손을 거친 파일을 보면 저렇지 않다.
종종 이와 같이 전혀 정체를 알 수 없는 스타일들이 잔뜩 들어있는 걸 볼 수 있다.
심지어 일부는 글자가 깨져 적용할 수도, 삭제할 수도 없는 경우를 만날 수 있기도 하다.
셀을 합치려고 해도 스타일이 너무 많다는 이유로 셀도 합칠 수 없는 사태가 벌어지기도 한다.
이런 경우에 기본 스타일만을 남기고 몽땅 삭제하려면 간단하게 아래와 같은 매크로를 실행하면 된다.
Sub StyleKill()
Dim styT As Style
Dim intRet As Integer
For Each styT In ActiveWorkbook.Styles
If Not styT.BuiltIn Then styT.Delete
Next styT
End Sub
그런데, 회사에서 스타일이 몇 천 개나 되는 경우를 만나니 너무 느리게 동작한다.
이런 경우에 최대한 빠르게 동작시키기 위해서는 화면 갱신을 잠시 멈추고, 재계산을 중단하는 등의 처리를 하면 된다.
이러한 기능을 모두 적용한 코드는 아래와 같다.
Sub StyleKill()
Dim styT As Style
Dim intRet As Integer
On Error Resume Next
back1 = Application.ScreenUpdating
back2 = Application.Calculation
back3 = Application.EnableEvents
Count = 0
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Application.EnableEvents = False
For Each styT In ActiveWorkbook.Styles
If Not styT.BuiltIn Then
styT.Delete
Count = Count + 1
End If
Next styT
Application.ScreenUpdating = back1
Application.Calculation = back2
Application.EnableEvents = back3
MsgBox (Count & " style(s) removed")
End Sub