以下代码可以满足你的需求,试试
Option Explicit
Sub DeleteUnusedMaster()
Dim oSlide As Slide
Dim Dic As Object, i As Long, j As Long
Dim oDicItem As Variant, DicItem As Variant
Dim oFlag As Boolean
Set Dic = CreateObject("Scripting.Dictionary")
'获得幻灯片母版编号和版式名称
For Each oSlide In ActivePresentation.Slides
Dic(oSlide.Design.Index) = Dic(oSlide.Design.Index) & "," & oSlide.Master.Name
Next oSlide
'删除任何幻灯片都不使用母版和版式
For i = ActivePresentation.Designs.Count To 1 Step -1
With ActivePresentation.Designs(i)
If Not Dic.exists(i) Then
.Delete
Else
DicItem = Split(Right(Dic(i), Len(Dic(i)) - 1), ",")
For j = .SlideMaster.CustomLayouts.Count To 1 Step -1
oFlag = False
For Each oDicItem In DicItem
If oDicItem = .SlideMaster.CustomLayouts(j).Name Then oFlag = True
Next oDicItem
If oFlag = False Then .SlideMaster.CustomLayouts(j).Delete
Next j
End If
End With
Next i
Set Dic = Nothing
End Sub