Ich möchte den überarbeiteten und ursprünglichen Text aus einem Dokument erhalten. Ich mache es so:VBA für jede Schleife gesperrt, wenn ich Revisionen
Set wrdDoc = wrdApp.Documents.Open(fileName)
For each sent in wrdDoc.Sentences
if sent.Revisions.Count >=0 then
after=sent.text
sent.Revisions.RejectAll
before=sent.text
SaveRev(before,after)
End if
next
Nun wäre das in Ordnung, außer dass fehlerhafte Sätze wie
Dies ist eine sentence.This andere.
Wird auf seltsame Weise geparst werden. Erstens wird es diese sein: „Dies ist ein Satz“, dann diese mit beiden „Dies ist ein sentence.This andere ist.“
Was passiert, wenn es Änderungen gibt? Die erste Iteration wird Revisionen des ersten Satzes rückgängig machen, dann wird die zweite Iteration diesen revidierten Teil nicht "sehen".
Die untere Zeile ist, die erste Iteration wird beide Versionen des ersten Satzes erhalten, und die zweite Iteration wird nur die ursprüngliche Version des ersten Satzes erhalten (beim Abrufen beider Versionen aus dem zweiten Satz).
Lassen Sie mich klarstellen:
Lasst uns sagen, dass ich das Original
hatteWir begannen mit diesem Satz sentence.And.
Und es wurde
überarbeitetWir sind mit dieser endete sentence.And diesen anderen Satz.
erste Iteration wird in
Ergebnis vor: Wir sind mit diesem Satz begann.
Nachher: Wir haben mit diesem Satz geendet.
Aber zweite Iteration wird
haben Sie vor: Wir sind am Ende mit diesem Satz sentence.And.
Nach: Wir endete mit diesem Satz.Und dieser andere Satz.
Nun, was ich tat, war die Logik verändern, die Revision Reversion zum Verhängnis:
Set wrdDoc = wrdApp.Documents.Open(fileName)
For each sent in wrdDoc.Sentences
if sent.Revisions.Count >=0 then
wrdDoc.Undo
after=sent.text
sent.Revisions.RejectAll
before=sent.text
SaveRev(before,after)
End if
next
ich das, weil ich mit einem unveränderten Dokument (mit Ausnahme des letzten Satz) enden.
Die Sache ist, macht dies das Makro in eine Endlosschleife bei einem bestimmten Satz.
Ich habe keine Ahnung von der Mechanik der für jeden, ich habe keine Ahnung, was es verursacht zu hängen.Offensichtlich verändert die Änderung der Sammlung die Schleife, aber ich verstehe nicht warum.
Ich könnte für i = 0 auf wrdDoc.Sentences.Count loopen, aber ich denke, das wird mich Sätze aus den gleichen Gründen überspringen lassen Ich wiederhole jetzt, und ich kann es nicht riskieren (auch wenn ich OK teste, Ich muss sicher sein, dass es nie passieren wird).
Die Frage ist also (sind):
- Kann jemand mir helfen, herauszufinden, warum es auf einem Satz ist blockiert,
- Gibt es einen besseren Weg, dies zu tun?
- Wie kann ich es lösen, während Sie sicherstellen, Sätze nicht zu überspringen.
Vielen Dank!
PS: Ich kann Beispieldokumente zur Verfügung stellen, lassen Sie mich wissen, wenn es benötigt wird (vielleicht ist das, was ich falsch mache, bereits jemandem klar, und ich würde die Proben machen müssen, da ich die Dokumente nicht teilen kann arbeiten an).
--EDIT--
Ok, so ist dies, wo es hängt, nur auf der 32. Datei.
Es hängt nicht an einem Satz, es tut tatsächlich ein paar am Anfang des Dokuments, dann geht es zurück zum Anfang.
Ich zuvor den gleichen Fehler, aber es geloopt in einem einzigen Satz, und ging nicht an den Anfang zurück. Ich denke, es ist das gleiche Problem. Ich werde versuchen, hier Original und überarbeitete Versionen zu reproduzieren.
Originalversion
MAIN TITLE
Measurement of some variable
1 REQUIRED TOOLS
1.1 Special tools
NOTe:
Some note about the procedure (unaltered by revision)
Equipment name (carrier returned line)
(english) assemply with Equipment PN
Kit
Equipment name (carrier returned line)
(english) assemply with (Another) Equipment PN
Kit
Document continues...
Es gibt zwei Geräte Einträge, bevor sie die Schleife neu gestartet.
Revision bestand aus dem Einfügen der Dokumentennummer, einigen ersten Buchstaben der Word Caps und Ändern der Reihenfolge zwischen Equipment PN und "Kit".
Überarbeitete Version
ducument number
MAIN TITLE
Measurement of Some Variable
1 REQUIRED TOOLS
1.1 Special Tools
NOTe:
Some note about the procedure (unaltered by revision)
Equipment name (carrier returned line)
(english) assemply with kit
Equipment PN
Equipment name (carrier returned line)
(english) assemply with kit
(Another) Equipment PN
Document continues...
Aufgenommen Original/Revison Paare waren:
Original-......................... ......... Überarbeitet
{Leer} ................................. ..Dokumentennummer
Messung einiger Variablen .............. Messung einiger Variablen
Spezialwerkzeuge ............................ Spezialwerkzeuge
(englisch) assemply with ....... ........... (Englisch) Montage mit Kit
(deutsch) Montage mit .................. (englisch) Montage mit Bausatz
Dann fängt es wieder an, die gleichen Einträge aufzunehmen, bis ich breche. Ich sehe nicht die Sätze, über die ich sprach, aber es gab einen Zeilenumbruch in die Revision.
Danke!
Hängt es immer am selben Satz? Wenn ja, welcher Satz ist das? – nhee
Ich muss meine Arbeitsstation erreichen, da die Dateien den Client nicht verlassen. Ich werde andere Dateien versuchen, um zu sehen, ob ich es reproduzieren kann. – RSinohara
"Ich mag das, weil ich mit einem unveränderten Dokument (außer für den letzten Satz).": FYI, um es den letzten Satz rückgängig zu machen einfach 'wrdDoc.Undo' verschieben, um unter' before = sent.text' zu sein –