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」の後にスライド番号フィールド コードが続く場合、「this is slide number」を「slide」に置き換えると、テキストは「slide <#>」と表示されます。

PowerPoint の「置換」機能を使用すると、機能が保持されます (スライドの番号付けは引き続き機能します)。どう違うの?さらに重要なことは、スライド番号を壊さずに部分文字列を置き換えるにはどうすればよいですか?

4

1 に答える 1

1

「PowerPointの「置換」機能を使用すると、機能は保持されます(スライドの番号付けは引き続き機能します)。どのように違いますか?さらに重要なのは、スライドの番号付けを破棄せずにサブストリングを置換するにはどうすればよいですか?」

最初の文は2番目の文で提起された質問に答えませんか?;-)

たとえば、このスニペットは、プレゼンテーションの各スライドの各形状で要求された置換を実行します。

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独自のReplace関数を使用すると、他の多くの問題も解決されます。たとえば、混合フォーマットを保持するのに非常に効果的です。

ネイティブのVB/VBA置換機能とはどう違うのですか?このようなアプリ固有の機能は、アプリを認識できます。つまり、特定のアプリがサポートする機能の特殊なケースになります。

于 2013-01-11T15:39:06.860 に答える