【问题标题】:How to clear Slide Master of all information in PowerPoint using VBA?如何使用 VBA 清除 PowerPoint 中所有信息的幻灯片母版?
【发布时间】:2017-11-17 03:49:48
【问题描述】:

我想打开当前文件夹中的每个 PowerPoint (*.pptx) 并清除所有图像和文本框的幻灯片母版,然后保存。

(它说我的帖子主要是代码,所以我需要添加更多细节,所以这是乔治华盛顿的一句话,“如果你尊重自己的声誉,就与优秀的人交往;因为独处比独处好在坏公司”)

新代码

Sub DeleteSlideMasterShapes()
    Dim i As Long
    Dim shp As Shape

    With ActivePresentation
        For i = .Designs.Count To 1 Step -1
            For Each shp In .Designs(i).SlideMaster.Shapes
                shp.Delete
            Next
        Next i
    End With
End Sub

Sub loopFiles()

Dim fso As New FileSystemObject
Dim fil As File
Dim fold As Folder
Dim yourfolder As String

Set fold = fso.GetFolder(Application.ActivePresentation.Path)

For Each fil In fold.Files

    If InStr(1, fil.Name, ".pptx") > 0 Then
        Application.Presentations.Open fil.Path

        Call DeleteSlideMasterShapes

        ActivePresentation.Save
        ActivePresentation.Close

    End If

Next fil

End Sub

【问题讨论】:

  • 您至少需要 1 个幻灯片母版。您不能删除所有幻灯片母版。如果您尝试删除最后一个,则会引发错误。这就像试图删除工作簿中的所有工作表。关于清除SM,你能解释一下你到底想达到什么目的吗?
  • 我的幻灯片母版在标题中包含图像和文本框,我想清除它们当前包含的信息

标签: vba loops slide powerpoint


【解决方案1】:

另一种方法,如果您想从所有幻灯片母版和母版布局中删除所有形状:

Sub DeleteSlideMasterShapes()
'   Including shapes on layouts

    Dim oDes As Design
    Dim oLay As CustomLayout

    With ActivePresentation

        ' For each slide master:
        For Each oDes In .Designs

            ' Delete the shapes on the master
            oDes.SlideMaster.Shapes.Range.Delete

            ' Then delete the shapes from each layout under
            ' the slide master:
            For Each oLay In oDes.SlideMaster.CustomLayouts
                oLay.Shapes.Range.Delete
            Next

        Next

    End With

End Sub

【讨论】:

  • 嘿史蒂夫,谢谢你的方法。我想测试它,但我对 VBA 很陌生,2 天,不知道如何连接到 Sub loopFiles()
  • 你已经完成了......只需用我的替换你的 DeleteSlideMasterShapes 子。
  • 我得到以下错误,编译错误:用户定义的类型未在 Sub loopFiles() 中定义
  • 在“Dim fso As New FileSystemObject”行上?如果是这样,请使用工具 |添加对“Microsoft Scripting Runtime”的引用的引用
【解决方案2】:

进一步说我的 cmets,如果您想删除幻灯片母版,请使用此

Sub DeleteSlideMaster()
    Dim i As Long

    With ActivePresentation
        On Error Resume Next
        For i = .Designs.Count To 1 Step -1
            .Designs(i).SlideMaster.Delete
        Next i
        On Error GoTo 0
    End With
End Sub

要删除幻灯片母版的形状,请使用此

Sub DeleteSlideMasterShapes()
    Dim i As Long
    Dim shp As Shape

    With ActivePresentation
        For i = .Designs.Count To 1 Step -1
            For Each shp In .Designs(i).SlideMaster.Shapes
                shp.Delete
            Next
        Next i
    End With
End Sub

如果我不明白您的问题,请随时提问

【讨论】:

    猜你喜欢
    • 2011-12-13
    • 1970-01-01
    • 2018-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-12
    • 1970-01-01
    • 2019-11-10
    相关资源
    最近更新 更多