回答
您需要循环浏览幻灯片上的所有占位符,确定每个人的类型,然后检查是否填充了预期的格式。有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
一个更优雅的解决方案,以找出是否一个占位符包含项目或没有,这是通用于所有类型的:如果不放在里面
if (selectedSlide.Shapes.Placeholders[i].PlaceholderFormat.ContainedType != Microsoft.Office.Core.MsoShapeType.msoAutoShape)
占位符是ContainedType msoAutoShape的占位符。将例如图像插入占位符时,类型将更改为项目类型,在本例中为msoPicture。
Office自动将项目添加到第一个可用的占位符(在主文件中首先添加),或者为ppPlaceholderPicture优先的图像添加项目。
这只能回答问题的一部分,当时我更关心如何强迫办公室不要将图片添加到占位符 – Dudi 2012-02-01 20:55:23
有时即使它们有内容,它们仍然是自动形状: - / – BrainSlugs83 2016-04-27 01:12:40
- 1. 用于web项目的Makefile:如何正确使用占位符?
- 2. 如何在liquibase中使用占位符
- 3. 如何在jQuery中使用占位符?
- 4. 如何使用占位符
- 5. 使用占位符
- 6. 如何确定TensorFlow中的占位符依赖关系
- 7. 如何使用tensorflow占位符在get_collection中使用
- 8. 如何在c中使用占位符(%s)创建字符串
- 9. 如何使用gettext占位符?
- 10. 在张量流中使用占位符
- 11. 在Tomcats Server.xml中使用占位符
- 12. 在占位符中使用html
- 13. 如何在占位符文本中使用Python中的正则表达式?
- 14. 使用占位符定义PropertySourcesPlaceholderConfigurer
- 15. 占位符如何在Scala中工作?
- 16. 占位符如何在Flyway中工作?
- 17. 如何在semantic-ui中占位符?
- 18. PlaceHolder - 如何在aspx中replce占位符?
- 19. 在tensorflow中,如何在喂食前使用占位符的值?
- 20. 如何指定占位符图像?
- 21. 如何在Webpack中定义自定义文件名占位符?
- 22. 如何确定32位与64位ASP.NET正在使用?
- 23. “占位符”绑定在StaticResource中
- 24. 使用modelformset_factory和占位符
- 25. 占位符使用python
- 26. asp.net占位符的使用
- 27. 如何在非确定性数组大小的占位符中设置形状
- 28. 如何在骆驼处理器中使用属性占位符
- 29. 如何在win32编辑控件中使用“占位符文本”?
- 30. 如何在mvc中使用占位符for editorfor?
我知道这个解决方案,我正在寻找一个更优雅的。 至于占位符的自动使用,只需尝试添加一个对象到布局幻灯片 - ppLayoutObject说通过 activeSlide.Shapes.AddPicture(...); – Dudi 2010-07-06 19:07:08
是的,自PPT2007以来,所有东西都占据了一定的位置。您在其他帖子中提到的解决方案是一种方法,但您说得对,当旧的幻灯片布局重新应用时,它会退缩。我发现的唯一方法是有点哈克。见上面的更新。 – 2010-07-06 21:36:24
关于占位符的使用,这是关于尽可能优雅,因为它:( – 2010-07-06 21:45:39