如何在MS Power Point演示文稿的其中一个主幻灯片中添加自定义文本占位符,并使用VBA脚本为每张幻灯片访问它?

时间:2017-01-10 14:35:34

标签: vba powerpoint

我在Power Point演示文稿的其中一张幻灯片上创建了一个自定义占位符,即Text Box Type的“CustomHeader”。如何遍历将Presentation Title插入此占位符的所有幻灯片。

我有以下代码,它在页脚中以自定义格式输入Page No。它还将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

1 个答案:

答案 0 :(得分:0)

由于您无法在幻灯片中添加占位符,我认为您的意思是您已将文本占位符添加到幻灯片母版中的一个自定义布局,并且您已重命名该占位符&#34; CustomHeader&#34;。

当基于该布局的幻灯片添加到演示文稿时,您的占位符将不再被调用&#34; CustomHeader&#34;。相反,它将被称为&#34;文本占位符3&#34;。因此,您的第一个任务是找到PowerPoint在插入时给出占位符的名称。

然后你可以在你的循环中简单地包含一个额外的条件:

if oshp.Name = "Text Placeholder #" then _
    oshp.TextFrame.TextRange.Text = "Happy Honika"