2010-07-05 80 views
3

给定幻灯片如何确定是否所有幻灯片布局占位符都在PowerPoint中使用?如何确定占位符正在使用中?

如果该占位符未被占用,是否可以防止在添加图片时自动使用占位符?

回答

1

您需要循环浏览幻灯片上的所有占位符,确定每个人的类型,然后检查是否填充了预期的格式。有18 PpPlaceholderType,所以你必须将它们全部设置好,但下面是你可以做什么来检查是否正在使用占位符的示例。

Sub CheckPlaceholders() 
Dim ap As Presentation: Set ap = ActivePresentation 
Dim sl As Slide: Set sl = ap.Slides(2) 
Dim shs As Shapes: Set shs = sl.Shapes 
Dim ph As Placeholders: Set ph = shs.Placeholders 
Dim p As Shape 
    For Each p In ph 
     Select Case p.Type 
     Case PpPlaceholderType.ppPlaceholderHeader 
      If p.TextFrame.HasText Then 
       Debug.Print "This Placeholder is in use" 
      End If 
     Case PpPlaceholderType.ppPlaceholderChart 
      If p.HasChart Then 
       Debug.Print "This Placeholder is in use" 
      End If 
     End Select 
    Next 
End Sub 

要插入,比方说,一张图片,没有它在一个占位符到达,我发现的唯一方法是创建一个循环来添加图片,直到其中一人是出于一个占位符,然后删除已经插入的那些。

Sub AddPicture() 
    Dim pic As String 
    pic = "C:\Users\Me\Desktop\beigeplum.jpg" 
    Dim ap As Presentation: Set ap = ActivePresentation 
    Dim sl As Slide: Set sl = ap.Slides(1) 
    Dim sh As Shape 

    Do 
     Set sh = sl.Shapes.AddPicture(pic, msoFalse, msoTrue, 1, 1) 
     sh.Tags.Add "MYPICTURE", 0 
    Loop Until sh.Type <> 14 

    Dim p As Shape 
    For Each p In sl.Shapes 
     If p.Type = 14 Then 
      If p.Tags.count > 0 Then 
       If p.Tags.Name(1) = "MYPICTURE" Then 
        p.Delete 
       End If 
      End If 
     End If 
    Next 
End Sub 
+0

我知道这个解决方案,我正在寻找一个更优雅的。 至于占位符的自动使用,只需尝试添加一个对象到布局幻灯片 - ppLayoutObject说通过 activeSlide.Shapes.AddPicture(...); – Dudi 2010-07-06 19:07:08

+0

是的,自PPT2007以来,所有东西都占据了一定的位置。您在其他帖子中提到的解决方案是一种方法,但您说得对,当旧的幻灯片布局重新应用时,它会退缩。我发现的唯一方法是有点哈克。见上面的更新。 – 2010-07-06 21:36:24

+0

关于占位符的使用,这是关于尽可能优雅,因为它:( – 2010-07-06 21:45:39

1

一个更优雅的解决方案,以找出是否一个占位符包含项目或没有,这是通用于所有类型的:如果不放在里面

if (selectedSlide.Shapes.Placeholders[i].PlaceholderFormat.ContainedType != Microsoft.Office.Core.MsoShapeType.msoAutoShape) 

占位符是ContainedType msoAutoShape的占位符。将例如图像插入占位符时,类型将更改为项目类型,在本例中为msoPicture。

Office自动将项目添加到第一个可用的占位符(在主文件中首先添加),或者为ppPlaceholderPicture优先的图像添加项目。

+1

这只能回答问题的一部分,当时我更关心如何强迫办公室不要将图片添加到占位符 – Dudi 2012-02-01 20:55:23

+0

有时即使它们有内容,它们仍然是自动形状: - / – BrainSlugs83 2016-04-27 01:12:40