Chcę uzyskać zarówno poprawiony, jak i oryginalny tekst z dokumentu. Ja robię to w ten sposób:VBA dla każdej pętli zablokowanej po przywróceniu wersji
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
teraz, że będzie w porządku, poza tym, że zdania zniekształconych jak
Jest to jeden sentence.This jest inny.
Zostanie sparsowany w dziwny sposób. Po pierwsze, nie będzie to jedno: „To jedno zdanie”, to jeden z dwóch „To jedna sentence.This jest kolejnym.”
Co się dzieje, gdy nie istnieją wersjami? Pierwsza iteracja spowoduje przywrócenie wersji pierwszego zdania, a druga iteracja nie "zobaczy" tej poprawionej części.
Dolna linia jest, pierwsza iteracja otrzyma obie wersje pierwszego zdania, a druga iteracja otrzyma tylko oryginalną wersję pierwszego zdania (podczas pobierania obu wersji z drugiego zdania).
Pozwól mi wyjaśnić:
Powiedzmy miałem oryginalnego
Zaczęliśmy ten sentence.And to zdanie.
I został zaktualizowany do
Skończyło się to sentence.And to inne zdanie.
Pierwsza iteracja spowoduje
Przed: Zaczęliśmy to zdanie.
Po: Zakończyliśmy to zdanie.
Ale druga iteracja będzie miał
Przed: Skończyło się to sentence.And to zdanie.
Po: Zakończyliśmy to zdanie. I to inne zdanie.
No, co zrobiłem było zmieniać logikę, odkręcając rewersji Weryfikacja:
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
Lubię to, bo ja skończyć z niezmienionym dokumentu (z wyjątkiem ostatniego zdania).
Chodzi o to, że robi to umieszcza makro w nieskończonej pętli przy jednym określonym zdaniu.
Nie mam pojęcia o mechanice każdego z nich, nie mam pojęcia, co powoduje zawieszenie.Oczywiście zmiana kolekcji jest kłopotliwa, ale nie rozumiem dlaczego.
Mogę pętli dla i = 0 do wrdDoc.Sentences.Count, ale myślę, że to pozwoli mi pominąć zdania z tych samych powodów, które powtarzam teraz, i nie mogę ryzykować (nawet jeśli testuję OK, Muszę być pewien, że to się nigdy nie wydarzy).
Więc pytanie jest (są):
- Może ktoś mi pomóc dowiedzieć się, dlaczego jest blokowanie na zdaniu
- Czy istnieje lepszy sposób to zrobić?
- Jak rozwiązać problem, nie pomijając zdań.
Dziękuję bardzo!
PS: Mogę dostarczyć przykładowe dokumenty, daj mi znać, jeśli jest to potrzebne (może to, co robię źle, jest już jasne dla kogoś, i musiałbym zrobić próbki, ponieważ nie mogę udostępnić dokumentów pracować nad).
--EDIT--
Ok tak to gdzie to wisi tylko na plik 32.
Nie zawiesza się na zdaniu, faktycznie robi kilka na początku dokumentu, a następnie wraca na początek.
Poprzednio napotkałem ten sam błąd, ale zapętlono go w jednym zdaniu i nie wróciłem do początku. Myślę, że to ten sam problem. Spróbuję odtworzyć tutaj wersje oryginalne i poprawione.
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...
Istnieją 2 wpisy sprzęt przed ponownym uruchomieniu pętli.
Rewizja polegała na wstawieniu numeru dokumentu, kilku pierwszych liter w słowie i zmianie kolejności między Urządzeniem PN a "Zestawem".
wersja poprawiona
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...
Nagrane pary oryginalny/revison były:
Original ......................... ......... Zmienione
{Puste} ................................. .. Numer dokumentu
Pomiar pewnej zmiennej .............. Pomiar pewnej zmiennej
Narzędzia specjalne ............................ Narzędzia specjalne
(angielski) zestaw z ....... ........... (angielski) zestaw z zestawem
(angielski) zestaw z .................. (angielski) zestaw z zestawem
Następnie zaczyna się ponownie, rejestrując te same wpisy, aż do momentu ich pęknięcia. Nie widzę nakładających się zdań, o których mówiłem, ale w wersji wprowadzono wstawienie linii.
Dzięki!
Czy zawsze trzyma się tego samego zdania? Jeśli tak, jakie to zdanie? – nhee
Muszę dotrzeć do mojej stacji roboczej, ponieważ pliki nie opuszczają klienta. Spróbuję na innych plikach, żeby sprawdzić, czy mogę je odtworzyć. – RSinohara
"Podoba mi się to, ponieważ kończę niezmienionym dokumentem (z wyjątkiem ostatniego zdania).": FYI, aby cofnąć ostatnie zdanie, po prostu przenieś 'wrdDoc.Undo' na poniżej' before = sent.text' –