如何用 activeX 文本框值替换 Powerpoint 中的文本?

How to replace text in Powerpoint with activeX textbox value?

对不起,如果我不能很好地解释这一点。语言障碍等等。可能会解释为什么我无法 google 解决方案......无论如何。 我正在尝试制作一个交互式 Powerpoint,在第一张幻灯片中,用户在 ActiveX 文本框中写下他们的名字,然后在其他几张幻灯片中重复这个名字。因为名称会位于不同文本的中间,所以我的解决方案是添加一个占位符词,然后将其替换为文本框值。我能够使用 Frankenstein 代码将一个名称替换为另一个名称,效果很好,但我无法让文本框使用它。我能做的最好的事情就是用 TextBox1.Value 的一些变体替换占位符名称,虽然我知道导致该问题的原因,但我无法找到解决方案。 不确定这是否会有所不同,但计划是在运行宏的活动文本框旁边添加某种“确定”按钮。

Sub Findandreplace()
Dim sld As Slide
Set sld = ActivePresentation.Slides(1)
Dim shp As Shape
For Each sld In ActivePresentation.Slides
For Each shp In sld.Shapes
If shp.HasTextFrame Then
If shp.TextFrame.HasText Then
shp.TextFrame.TextRange.Text = Replace(shp.TextFrame.TextRange.Text, "word1", "word2")
End If
End If
Next shp
Next sld
End Sub

ActiveX 对象有一组不同于常规 PPT 形状的 properties/methods。假设您在变量 oSh 中引用了 AX 文本框,

osh.OLEFormat.Object.Text

将为您提供 ActiveX 文本框中的文本