Поиск и замена текста в надписях - VBA

Узнай цену своей работы

Формулировка задачи:

Здравствуйте. Необходимо решить проблему в крайние сроки. Может решение у меня под носом, но голова не варит( В общем есть документ вордовский и в нем я сделал надписи в автофигурах. Мне необходимо сделать макрос по поиску и замене надписей в этих автофигурах. нашел код, сделал, но поиск и замена надписи происходит только в первой автофигуре. вот код:
Листинг программы
  1. Dim myStoryRange As Range
  2. For Each myStoryRange In ActiveDocument.StoryRanges
  3. With myStoryRange
  4. With .Find
  5. .Text = "текст надписи"
  6. .Replacement.Text = "на какой необходимо заменить"
  7. .Forward = True
  8. .Wrap = wdFindContinue
  9. .Format = True
  10. .MatchCase = False
  11. .MatchWholeWord = False
  12. .MatchWildcards = False
  13. .MatchSoundsLike = False
  14. .MatchAllWordForms = False
  15. .Execute Replace:=wdReplaceAll
  16. End With
  17. End With
  18. Next myStoryRange
Код не полный, так как тот который я нашел не работает, вся программа зависает и приходится перезапускать. Вот полный код.
Листинг программы
  1. Dim myStoryRange As Range
  2. For Each myStoryRange In ActiveDocument.StoryRanges
  3. With myStoryRange
  4. With .Find
  5. .Text = "текст надписи"
  6. .Replacement.Text = "на какой необходимо заменить"
  7. .Forward = True
  8. .Wrap = wdFindContinue
  9. .Format = True
  10. .MatchCase = False
  11. .MatchWholeWord = False
  12. .MatchWildcards = False
  13. .MatchSoundsLike = False
  14. .MatchAllWordForms = False
  15. .Execute Replace:=wdReplaceAll
  16. End With
  17. While Not (.NextStoryRange Is Nothing)
  18. Set myStoryRange = .NextStoryRange
  19. With .Find
  20. .Text = "текст надписи"
  21. .Replacement.Text = "на какой необходимо заменить"
  22. .Forward = True
  23. .Wrap = wdFindContinue
  24. .Format = True
  25. .MatchCase = False
  26. .MatchWholeWord = False
  27. .MatchWildcards = False
  28. .MatchSoundsLike = False
  29. .MatchAllWordForms = False
  30. .Execute Replace:=wdReplaceAll
  31. End With
  32. Wend
  33. End With
  34. Next myStoryRange
и да кстати стандартными средствами поиска и замены все получается, но мне необходим макрос. записывал, но все равно та же беда(

Решение задачи: «Поиск и замена текста в надписях»

textual
Листинг программы
  1. Dim rng As Range
  2. Dim sh As Shape
  3. Dim str As String
  4.  
  5. For Each sh In ActiveDocument.Shapes
  6.    With sh.TextFrame
  7.       If .HasText <> 0 Then
  8.          Set rng = .TextRange
  9.          With rng.Find
  10.             .ClearFormatting
  11.             .Replacement.ClearFormatting
  12.             .Text = "Что заменить"
  13.             .Replacement.Text = "На что заменить"
  14.             .Forward = True
  15.             .Wrap = wdFindContinue
  16.             .MatchCase = False
  17.             .Execute Replace:=wdReplaceAll
  18.          End With
  19.       End If
  20.    End With
  21. Next sh

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 4.4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы