Попытка найти / заменить в PowerPoint с помощью VBA - PullRequest
0 голосов
/ 01 мая 2018

Я пытаюсь найти / заменить несколько слов / фраз в powerpoint, используя VBA. Приведенный ниже код застревает в «Set ShpTxt = shp.TextFrame.TextRange» с ошибкой, говорящей «Указанное значение выходит за пределы диапазона». Это происходит в середине документа, в то время как более ранние вхождения «МЕСЯЦ ХХ, 20ХХ» не заменяются. Пожалуйста, помогите!

Sub Multi_FindReplace()

Dim sld As Slide
Dim shp As Shape
Dim ShpTxt As TextRange
Dim TmpTxt As TextRange
Dim FindList As Variant
Dim ReplaceList As Variant
Dim x As Long

FindList = Array("MONTH XX, 20XX", "United States", "Mexico")
ReplaceList = Array("September 22, 2020", "USA", "MEX")

 For Each sld In ActivePresentation.Slides 
   For Each shp In sld.Shapes
    Set ShpTxt = shp.TextFrame.TextRange

    If ShpTxt <> "" Then
      For x = LBound(FindList) To UBound(FindList)

          Set ShpTxt = shp.TextFrame.TextRange

          Set TmpTxt = ShpTxt.Replace( _
           FindWhat:=FindList(x), _
           Replacewhat:=ReplaceList(x), _
           WholeWords:=True)

          Do While Not TmpTxt Is Nothing
            Set ShpTxt = ShpTxt.Characters(TmpTxt.Start + TmpTxt.Length, 
             ShpTxt.Length)
            Set TmpTxt = ShpTxt.Replace( _
             FindWhat:=FindList(x), _
             Replacewhat:=ReplaceList(x), _
             WholeWords:=True)
          Loop

         Next x

        End If

    Next shp

  Next sld

End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...