Sub test1()
Dim pFindTxt As String
Dim pReplaceTxt As String
Dim rngStory As Word.Range
Dim oShp As Object ' HERE IS THE KEY!
Dim iShp As Integer
pFindTxt = "111"
pReplaceTxt = "222"
For Each rngStory In ActiveDocument.StoryRanges
iShp = rngStory.InlineShapes.Count
If iShp > 0 Then
Debug.Print ("found inlineShape:" & iShp)
For Each oShp In rngStory.InlineShapes
Debug.Print ("processing")
oShp.TextEffect.Text = Replace(oShp.TextEffect.Text, pFindTxt, pReplaceTxt)
Debug.Print ("effect:" & oShp.TextEffect.Text)
Next oShp
End If
iShp = rngStory.ShapeRange.Count
If iShp > 0 Then
Debug.Print ("found normalShape:" & iShp)
For Each oShp In rngStory.ShapeRange
Debug.Print ("processing")
oShp.TextEffect.Text = Replace(oShp.TextEffect.Text, pFindTxt, pReplaceTxt)
Debug.Print ("effect:" & oShp.TextEffect.Text)
Next oShp
End If
Next
End Sub