vba powerpoint分配Textshape 1作为标题?

时间:2018-08-06 19:08:41

标签: powerpoint powerpoint-vba

使用Office 2016 PPT,在共享PPT文件并从某人取回它之后,它现在已在幻灯片上保留了标题,但它们现在是“ TextShape 1”,并且位于正确的位置(幻灯片顶部),并且可以不会在大纲视图中显示为标题等。仅重置幻灯片会覆盖空白框...没有太大帮助。到目前为止,一些网络搜索尚未解决此问题。

由于我是Powerpoint的新手,请举例说明在活动演示文稿中最简单的vba方式,使每张幻灯片上的“ TextShape 1”被视为各个幻灯片的标题?重新定义?添加内容为“ TextShape 1”的新标题框,并删除旧框?

谢谢。

1 个答案:

答案 0 :(得分:0)

感谢您的意见。

作为vba-powerpoint初学者,很难通过集合和术语找到我的方式,当然也很费时间,但是我针对出现的有限问题写了一个解决方案。

您可能会认为您可以添加标题对象,但是至少按照我尝试的方式,它抱怨说当前的幻灯片布局无法做到这一点。我不知道如何将文本框指定为标题。因此,我使用vba将没有幻灯片的幻灯片的格式设置为Titleonly,将文本复制到其中,然后删除了新形状覆盖的旧形状,如下所示:

Attribute VB_Name = "Module1"
Sub newtitles()
Dim s As Variant

For s = 1 To ActivePresentation.Slides.Count

If Not ActivePresentation.Slides(s).Shapes.HasTitle Then
 ActivePresentation.Slides(s).Layout = ppLayoutTitleOnly 
' adds a title placeholder too; could not .addtitle to slide without a title in format
 ActivePresentation.Slides(s).Shapes.Title.TextFrame.TextRange.Text = ActivePresentation.Slides(s).Shapes(1).TextFrame.TextRange.Text
 ActivePresentation.Slides(s).Shapes(1).Delete ' remove redundant box
End If  'about title

Next ' slides
End Sub