在VBA中使用替换功能会丢失域代码信息

时间:2013-01-10 16:58:42

标签: vba search powerpoint-vba

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

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

1 个答案:

答案 0 :(得分:1)

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

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

例如,此代码段将针对演示文稿中每张幻灯片上的每个形状进行替换:

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替换功能有何不同?像这样的应用程序特定功能可以识别应用程序,即特殊情况下特定应用程序支持的功能。