Desidero ottenere sia il testo revisionato che quello originale da un documento. Lo faccio in questo modo:VBA per ogni ciclo bloccato quando si annullano le revisioni
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
Ora che sarebbe bene, tranne che le frasi malformati come
Questo è uno frase.Questa è un altro.
Viene analizzato in modo strano. In primo luogo, ci sarà questa: "Questa è una frase", allora questo con entrambe le "questo è uno frase.Questa è un altro."
quello che succede quando ci sono revisioni là? La prima iterazione annullerà le revisioni sulla prima frase, quindi la seconda iterazione non "vedrà" quella parte rivista.
In conclusione, la prima iterazione otterrà entrambe le versioni della prima frase e la seconda iterazione otterrà solo la versione originale della prima frase (ottenendo entrambe le versioni dalla seconda frase).
Vorrei chiarire:
Diciamo che ho avuto l'originale
Abbiamo iniziato con questo sentence.And questa frase.
Ed è stato rivisto per
Abbiamo finito con questo sentence.And quest'altra frase.
prima iterazione si tradurrà in
Prima: Abbiamo iniziato con questa frase.
Dopo: Siamo finiti con questa frase.
Ma nella seconda iterazione avrà
Prima: Abbiamo finito con questo sentence.And questa frase.
Dopo: Siamo finiti con questa frase. E questa altra frase.
Beh, quello che ho fatto è stato cambiare la logica, annullando l'inversione di revisione:
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
Mi piace questo perché io alla fine con un documento inalterato (tranne che per l'ultima frase).
La cosa è, facendo questo mette la macro in un ciclo infinito in una frase specifica.
Non ho idea della meccanica di ciascuno, non ho idea di cosa lo stia causando.Ovviamente l'alterazione della raccolta sta incasinando il ciclo, ma non capisco perché.
Potrei fare un ciclo per i = 0 a wrdDoc.Sentences.Count, ma penso che mi faranno saltare le frasi per gli stessi motivi per cui ne sto ripetendo uno ora, e non posso rischiare (anche se eseguo il test OK, Devo essere sicuro che non accadrà mai).
Quindi la domanda è (sono):
- Può uno aiutarmi a capire il motivo per cui è di chiusura su una frase,
- C'è un modo migliore di fare questo?
- Come posso risolverlo assicurandoti di non saltare le frasi.
Grazie mille!
PS: Posso fornire documenti di esempio, fammi sapere se è necessario (forse quello che sto facendo di sbagliato è già chiaro a qualcuno, e dovrei fare i campioni in quanto non posso condividere i documenti che sono lavorando su).
--EDIT--
Ok, quindi questo è dove è appeso, solo sul file di 32 °.
Non si blocca su una frase, ne esegue effettivamente alcune all'inizio del documento, quindi torna all'inizio.
Ho già riscontrato lo stesso errore, ma è stato ripetuto in una singola frase e non è tornato all'inizio. Penso che sia lo stesso problema. Proverò a riprodurre qui versioni originali e riviste.
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...
Ci sono 2 voci attrezzature prima di riavviare il ciclo.
La revisione consisteva nell'inserimento del numero del documento, dei cappucci della prima lettera della parola e nella modifica dell'ordine tra apparecchiatura PN e "kit".
versione riveduta
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...
registrati coppie originale/Revison erano:
originale ......................... ......... Revisionato
{vuoto} ................................. ..Documento numero
Misurazione di alcune variabili .............. Misura di alcune variabili
Attrezzi speciali ............................ Attrezzi speciali
(inglese) riassumere con ....... ........... (inglese) Assemply con il kit
(inglese) Assemply con .................. (inglese) Assemply con kit
Quindi ricomincia, registrando le stesse voci finché non si interrompe. Non vedo le frasi sovrapposte di cui ho parlato, ma c'era una inserzione dell'interruzione di riga sulla revisione.
Grazie!
Appende sempre sulla stessa frase? Se sì, che frase è? – nhee
Devo raggiungere la mia workstation poiché i file non escono dal client. Proverò su altri file per vedere se riesco a riprodurlo. – RSinohara
"Mi piace perché finisco con un documento inalterato (eccetto per l'ultima frase).": FYI per farlo annullare l'ultima frase sposta semplicemente 'wrdDoc.Undo' per essere sotto' before = sent.text' –