0

我需要使用 VBA 替换 PowerPoint 演示文稿模板中的部分文本框。同一个框包含幻灯片编号的域代码(是正确的短语吗?)。当我对模板中的每个形状 oSh 执行以下代码时:
If oSh.HasTextFrame Then
oSh.TextFrame.TextRange.Text = Replace(oSh.TextFrame.TextRange.Text, searchString, newString)
End If
有关字段代码的信息消失了 - 幻灯片编号已损坏。例如,如果形状有“这是幻灯片编号”后跟幻灯片编号域代码,那么如果我将“这是幻灯片编号”替换为“幻灯片”,文本将显示为“幻灯片 <#>”。

当我使用 PowerPoint 的“替换”功能时,该功能被保留(幻灯片编号仍然有效)。它有什么不同?更重要的是 - 如何在不破坏幻灯片编号的情况下替换子字符串?

4

1 回答 1

1

“当我使用 PowerPoint 的“替换”功能时,功能被保留(幻灯片编号仍然有效)。它有什么不同?更重要的是 - 如何在不破坏幻灯片编号的情况下替换子字符串?

第一句不是回答了第二句提出的问题吗?;-)

例如,此片段将在演示文稿中每张幻灯片上的每个形状上执行您要求的替换:

Dim oSl As Slide
Dim oSh As Shape
For Each oSl In ActivePresentation.Slides
    For Each oSh In oSl.Shapes
        oSh.TextFrame.TextRange.Replace "This is the slide number", "Slide"
    Next
Next

使用 PPT 自己的替换功能也解决了许多其他问题……例如,它在保留混合格式方面做得很好。

它与原生 VB/VBA 替换功能有何不同?像这样的特定于应用程序的功能可以是应用程序感知的,即,可以是特定应用程序支持的功能的特例。

于 2013-01-11T15:39:06.860 回答