2017-06-14 197 views
1

我想打开当前文件夹中的每个PowerPoint(* .pptx),并清除所有图像和文本框的幻灯片母版,然后保存。 (它说我的帖子主要是代码,所以我需要添加更多的细节,所以这里有一句乔治华盛顿的报价,“如果你尊重你自己的声誉,那么与高质量的男人联系在一起;因为最好是独自一人比坏公司“)如何使用VBA清除PowerPoint中所有信息的幻灯片母版?

新代码

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 
+0

您需要至少有1个Slide Master。您无法删除所有幻灯片。如果您尝试删除最后一个,它会引发错误。这就像试图删除工作簿中的所有工作表一样。关于清除SM,你能解释一下你到底想要达到什么目的吗? –

+0

我有幻灯片的主人,其中包括标题中的图像和文本框,我想清除他们当前的信息 –

回答

0

继我的意见,如果你想删除的幻灯片母版然后用这个

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 

要删除形状一个slidemaster的,使用此

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 

如果我没有理解你的查询,然后请随时问

+0

我对VBA很新,这将适合我的循环,我将如何保存文件一次形状被删除? –

+0

我可以给你答案,但我想让你试试看?如果你卡住了,然后张贴你试过的代码,我们会从那里拿到它 –

+0

这很美,谢谢 –

0

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

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 
+0

嘿史蒂夫,谢谢你的方法。我想测试它,但我对VBA非常陌生,2天,并且不知道如何接口到Sub loopFiles() –

+0

您已经完成了它...只需将您的DeleteSlideMasterShapes子项替换为我的。 –

+0

我收到以下错误与我在一起,编译错误:用户定义类型未定义在Sub loopFiles() –

相关问题