PowerPoint2007文件,点开母版视图,会看到很多版式页面有“任何幻灯片都不使用”的提示,如何使用vba代码,一键操作将这些都不使用的版式页面删除掉?

解决方案 »

  1.   

    以下代码可以满足你的需求,试试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