В каждом найденном мной примере в интернете, когда речь идет о замене текста, присутствует страшная цифра 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, прошу прощения, если это в любом случае ужасно.