Dlaczego zachowanie makra słów zmienia się w połączeniu ze zmianami ścieżki?


1

Niedawny problem, który zauważyłem podczas uruchamiania makr wyrazów (w tym przypadku konkretnie wyszukiwania i zamiany operacji), polega na tym, że nie mają oczekiwanego zachowania, gdy zmiany ścieżek są aktywowane (sensowne jest, aby je aktywować, więc mogę łatwiej śledzić zmiany, które miały miejsce w dokumencie ze względu na makro, dzięki czemu łatwiej jest ustalić jego wydajność). Mam następujący kod (to tylko przykład, aby zademonstrować problem):

Sub test()

ActiveDocument.TrackRevisions = Not ActiveDocument.TrackRevisions

With Selection.Find
    .Text = "(B)([0-9]{6})"
    .Replacement.Text = "\1 \2"
    .Wrap = wdFindContinue
    .MatchWildcards = True
End With
Selection.Find.Execute Replace:=wdReplaceAll

With Selection.Find
    .Text = "(organised)(  )(under)"
    .Replacement.Text = "\1 \3"
    .Wrap = wdFindContinue
    .MatchWildcards = True
End With
Selection.Find.Execute Replace:=wdReplaceAll

End Sub

Pierwszym wyborem.find jest znalezienie takich liczb

B666666

i zastąp je

B 666666

tym, co robi drugie wyszukiwanie i zastąpienie, jest znalezienie bardzo określonej części tekstu, w której znajduje się podwójna przestrzeń i zastępuje ją pojedynczym odstępem

organised  under

jest zmieniony na

organised under

oba te kody działają. Ale jeśli aktywuję zmiany ścieżki przed uruchomieniem kodu za pomocą

ActiveDocument.TrackRevisions = Not ActiveDocument.TrackRevisions

następnie pierwsza część kodu powoduje

"B666666 " 'thus it does nothing except for putting a space in front of the string

a drugi kod wykonuje następujące czynności

"organisedunder " 'thus it merges the two strings and puts a space in front of them.

Czy ktoś może wyjaśnić tę zmianę w zachowaniu i czy istnieje sposób, aby temu zapobiec?

Rozwiązanie? :

Sub EvenMoreTesting()

Selection.HomeKey Unit:=wdStory

With Selection
.Find.Text = "Stocks"

Do
Selection.HomeKey Unit:=wdStory
Found = .Find.Execute
If Found Then Selection.Range.HighlightColorIndex = wdYellow
If Found Then Selection.TypeText Text:="Sto"
Loop While Found

End With

End Sub
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.