我需要使用VBA替换PowerPoint演示文稿模板中的部分文本框。同一个框包含幻灯片编号的字段代码(正确的短语?)。
当我在模板中的每个形状oSh上执行以下代码时:
If oSh.HasTextFrame Then
oSh.TextFrame.TextRange.Text = Replace(oSh.TextFrame.TextRange.Text, searchString, newString)
End If
有关字段代码的信息消失 - 幻灯片编号被破坏。
例如,如果形状有“这是幻灯片编号”,后跟幻灯片编号字段代码,那么如果我用“幻灯片”替换“这是幻灯片编号”,则文本将显示为“slide<#>”。 / p>
当我使用PowerPoint“替换”功能时,功能将被保留(幻灯片编号仍然有效)。它有什么不同?更重要的是 - 如何在不破坏幻灯片编号的情况下更换子串?
答案 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替换功能有何不同?像这样的应用程序特定功能可以识别应用程序,即特殊情况下特定应用程序支持的功能。