[英]How to add a custom Text placeholder in one of the master slides in MS Power Point presentation and access it using VBA Script for each slide?
我在Power Point演示文稿中的一张幻灯片上创建了一个自定义占位符,即“文本框类型”的“ CustomHeader”。 如何遍历将演示文稿标题插入此占位符的所有幻灯片。
我有以下代码,该代码在页脚中以自定义格式输入页面编号。 它还将Section插入到幻灯片的页脚中。 我想在CustomHeader占位符中为每个匹配的幻灯片输入一些内容。
Sub SecFootNew()
Dim oshp As Shape
Dim b_found As Boolean
If ActivePresentation.SectionProperties.Count > 0 Then
Dim osld As Variant
For iSlide = 1 To ActivePresentation.Slides.Count
' Need Help with These
With ActivePresentation.Slides(2).Shapes.Placeholders(CustomHeader).TextFrame.TextRange
.Text = "Happy Honika"
End With
' The Following portion of the code is working Perfectly
If iSlide <> 1 Then
Set osld = ActivePresentation.Slides(iSlide)
' Configure Display of Page Number
With osld.HeadersFooters.DateAndTime
.Visible = False ' True For making the Date Visible
' .UseFormat = True
' .Format = ppDateTimedMMMyy
End With
' Configure Footer
osld.HeadersFooters.Footer.Visible = True
osld.HeadersFooters.SlideNumber.Visible = True
For Each oshp In osld.Shapes
If oshp.Type = msoPlaceholder Then
If oshp.PlaceholderFormat.Type = ppPlaceholderFooter Then
With oshp.TextFrame.TextRange
.Font.Name = "Calibri"
.Font.Size = 12
.Font.Color = RGB(255, 255, 255)
.Text = ActivePresentation.SectionProperties.Name(osld.sectionIndex)
End With
End If
If oshp.PlaceholderFormat.Type = ppPlaceholderSlideNumber Then
With oshp.TextFrame.TextRange
.Font.Name = "Calibri"
.Font.Size = 12
.Font.Color = RGB(255, 255, 255)
.Text = "Slide " & CStr(osld.SlideIndex) & " of " & CStr(ActivePresentation.Slides.Count)
End With
End If
End If
Next oshp
End If
Next iSlide
End If
End Sub
由于您无法在幻灯片上添加占位符,因此我想您是指已在“幻灯片母版”中的“自定义布局”中添加了一个文本占位符,并且已将该占位符重命名为“ CustomHeader”。
将基于该布局的幻灯片添加到演示文稿后,您的占位符将不再称为“ CustomHeader”。 而是将其称为“文本占位符3”。 因此,您的首要任务是查找PowerPoint在插入时为您的占位符提供的名称。
然后,您可以在循环中简单地包含一个额外条件:
if oshp.Name = "Text Placeholder #" then _
oshp.TextFrame.TextRange.Text = "Happy Honika"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.