首页 文章

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

提问于
浏览
0

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

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

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

相关问题