Если вы хотите заменить все выводы текста, действительно ли необходимо заменить «replace: = wdReplaceAll»?Нашел альтернативу - PullRequest
0 голосов
/ 24 июня 2019

В каждом найденном мной примере в интернете, когда речь идет о замене текста, присутствует страшная цифра replace:=wdReplaceAll.Я называю это ужасным, потому что заметил, что, повторяя все мои сюжеты, документ перестает отвечать на запросы, я пытался без wdReplaceAll, и это ненадолго, но намного меньше, чем когда я его использую.

Поэтому я попытался найти способ пропустить его, который в основном состоит из: Wrap:=wdFindContinue Forward:=True

Я посмотрел на определения, но не похоже, что что-то из этого действительно должно сделать дополнительные замены,

Итак, с помощью некоторых пользователей я пришел к следующему:

Sub RngFnd(Rng As Range, StrFnd As String, StrRep As String)
    With Rng.Find
        .Execute findText:=StrFnd, Forward:=True, ReplaceWith:=StrRep, Wrap:=wdFindContinue
    End With
End Sub

А затем:

For Each Rng In ActiveDocument.StoryRanges
    Do
        For i = 1 To footerfindreplace.Count
            Call RngFnd(Rng, footerfindreplace(i).FND, footerfindreplace(i).replc) 'the footerfindreplace is on another class, but working fine
        Next i
        Set Rng = Rng.NextStoryRange
    Loop Until Rng Is Nothing
Next

Я повторил некоторые слова, которые хотел заменитьнапример, в том же нижнем колонтитуле, и он успешно заменил их все, и был быстрее, чем wdreplaceall.

Имеет ли это смысл?Я новичок в VBA, прошу прощения, если это в любом случае ужасно.

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