【问题标题】:VBA for capitalizing title slides用于大写标题幻灯片的 VBA
【发布时间】:2015-12-24 04:44:19
【问题描述】:

我想使用 VBA 将我所有 PowerPoint 幻灯片标题中的每个单词大写。

到目前为止,这是我正在使用的代码:

Sub Capitalize()
    Dim sld As Slide

    For Each sld In ActivePresentation.Slides
            sld.Title.TextFrame.TextRange.ChangeCase ppCaseTitle
        Next sld
End Sub

突出显示“标题”并说“找不到方法或数据成员”给我一个错误

任何帮助将不胜感激。谢谢!

【问题讨论】:

标签: vba powerpoint


【解决方案1】:

Title 对象在 Shapes 对象上可用,该对象映射到幻灯片的占位符标题。我还会使用 HasTitle 属性来检查幻灯片是否有标题。

Sub Capitalize()
Dim sld As Slide

For Each sld In ActivePresentation.Slides
    If sld.Shapes.HasTitle Then
        sld.Shapes.Title.TextFrame.TextRange.ChangeCase ppCaseTitle
    End If
Next sld
End Sub

【讨论】:

  • @change33 请注意,在本网站上说“非常感谢”的最佳方式是勾选该复选标记(并且,一旦您获得 15 个代表,就投赞成票)。
【解决方案2】:

Slide 对象没有 Title 属性。您需要查找包含标题文本的Shape 对象。

迭代.Shapes 集合并使用它的Name 知道您何时找到包含您的标题的集合(然后您可以退出循环)。

这假设您已将标题形状命名为“标题”或其他名称。

Dim sld As Slide, shp As Shape
Dim found As Boolean
For Each sld In ActivePresentation.Slides
    For Each shp In sld.Shapes
        If shp.Name = "Title" Then
            found = True
            shp.TextFrame.TextRange.ChangeCase ppCaseTitle
        End If
        If found Then Exit For
    Next
    If found Then Exit For
Next

【讨论】:

  • 如果你自己抽泣,你可以直接Exit Sub它并跳过整个found-part ^^
  • @DirkReichel 绝对
  • 您的代码正在检查形状的名称是否为“标题”并且与幻灯片标题不同。
  • 有没有办法不将形状命名为“标题”?我可以循环并说每张幻灯片的形状 1 中每个单词的首字母大写吗?
  • @Mat'sMug:从创建套牌到幻灯片,你会对它的使用感到惊讶。 :-)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-03
  • 2019-01-18
  • 1970-01-01
  • 2023-02-10
  • 2022-08-21
  • 2016-08-15
相关资源
最近更新 更多