Ich bin mir nicht sicher, was das Problem verursacht. Mein Ziel ist ziemlich einfach - ich möchte etwas Text "abc.XXXX" durch eine inkrementelle Zahl ersetzen, so dass es auf "abc.0001", "abc.0002", "abc.0003" usw. übertragen wird. Was passiert ist, dass für einige Dokumente das Skript für immer läuft, ohne irgendetwas (zumindest nicht sichtbar) zu ersetzen oder Fehler zu geben.suchen und ersetzen Problem Endlosschleife
Hier ist meine aktuellen Code
With ActiveDocument.Content
With .Find
.ClearFormatting
.Replacement.ClearFormatting
.text = ABC_123.XXXX
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchWildcards = False
.Execute Replace:=wdReplaceOne
End With
While .Find.Found = True
count = count + 1
lastReqNr = lastReqNr + 1
.text = ABC_123. & Right(String(4, "0") & lastReqNr, 4)
.Collapse wdCollapseEnd
.Find.Execute Replace:=wdReplaceOne
Wend
End With
Für einige Dokumente dieser Code perfekt funktioniert gut, aber einige Dokumente verursachen Probleme. Die Variablen sind in jedem Fall korrekt gefüllt. Könnte der Grund sein, dass ich viel mit Modifikationsverfolgung arbeite?
zu ändern Gibt es eine Möglichkeit Sie ein Beispiel für eine Situation schaffen kann, wo sie in die Endlosschleife läuft? Was genau ist "S_FIND" gleich? – SalvadorVayshun
Hey, natürlich. "S_FIND" ist z.B. "ABC_123.XXXX" und die Endlosschleife scheinen zu erscheinen, wenn der Text etwa so aussieht: 'ABC_123.XXXX \ n (früher: ABC_003.004)'. Ich dachte, dass eine unendliche Schleife nicht passieren sollte, da die Ersetzung den aktuellen Wert mit ABC_123.0001 überschreibt, was ABC_123.XXXX nicht mehr entspricht. – Erik
Ich habe versucht, im Detail herauszufinden, wann die Schleife passiert: Es tritt jedes Mal ein Absatz auf ist direkt hinter dem Text zu ersetzen. Dann ersetzt das Wort 'ABC_123.XXXX' durch' ABC_123.0001ABC_123.0002ABC_123.0003 ... 'und so weiter. Hat jemand eine Idee warum der Absatz/Zeilenumbruch zu diesem Verhalten führt? – Erik