恢复修订版本时,每个循环的VBA已锁定

ino原

我想从文档中获取修订的文本和原始文本。我这样做:

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

现在就可以了,除了格式错误的句子,例如

这是一句话,这是另一句话。

将以一种奇怪的方式进行解析。首先,会有一个:“这是一个句子。 ”,然后这两个都带有“这是一个句子。这是另一个。

那里有修订时会发生什么?第一次迭代将还原第一句的修订,然后第二次迭代将不会“看到”该修订的部分。

最重要的是,第一次迭代将获取第一句的两个版本,第二次迭代将仅获取第一句的原始版本(同时从第二句获取两个版本)。

让我澄清一下:

假设我有原始的

我们从这句话开始,然后是这句话。

并被修订为

我们以这个句子和另一个句子结束。

第一次迭代将导致

之前:我们从这句话开始。

之后:我们以这句话结束。

但是第二次迭代将有

之前:我们以这句话和这句话结束。

之后:我们以这句话结束。

好吧,我所做的是更改逻辑,撤消了修订版本:

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

我之所以这样,是因为我得到的文档没有更改(最后一句话除外)。

事实是,这样做会将宏置于一个特定句子的无限循环中。

我不知道每个的机制,我不知道是什么导致它挂起。显然,改变集合会弄乱循环,但是我不明白为什么。

我可以将i = 0循环到wrdDoc.Sentences.Count,但是出于与我现在重复一遍相同的原因,我认为这会使我跳过句子,而且我不能冒险(即使我测试确定,我也必须确保它永远不会发生)。

因此,问题是:

  1. 谁能帮我弄清楚为什么它会锁定句子,
  2. 有更好的方法吗?
  3. 在确保不跳过句子的同时,我该如何解决。

非常感谢你!

PS:我可以提供示例文档,让我知道是否需要(也许我做错了的事已经对某个人清楚了,由于我无法共享正在处理的文档,所以我不得不制作示例)。

- 编辑 -

好的,这就是挂起的位置,仅在第32个文件上。

它不会挂在句子上,它实际上在文档的开头做了一些,然后又回到了开头。

我以前遇到过相同的错误,但是它只用一个句子就循环了,并且没有回到开头。我认为这是同样的问题。我将在此处尝试复制原始版本和修订版本。

原始版本

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...

重新启动循环之前,有2个设备条目。

修订包括插入文档编号,一些单词首字母大写以及更改设备PN和“套件”之间的顺序。

经过修改的版本

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...

记录的原始/修订对是:

原始....................................修订

{空} ......................................文件编号

某些变量的测量..............某些变量的测量

特殊工具.....................................特殊工具

(简体中文)............(简体中文)

(简体中文)............(简体中文)

然后它再次开始,记录相同的条目,直到我中断为止。我没有看到我说过的句子重叠,但是在修订版中插入了换行符。

谢谢!

Cor_Blimey

枚举期间不应更改可枚举的对象,否则可能会发生不良情况(这取决于集合的类型)。

我的猜测是,修订/撤消过程与不可靠的句子结合在一起,导致句子的数量改变。

您应该先准备自己的收藏,看看有什么不同。只需尝试Set sents = New Collection: For Each sent in wrdDoc.Sentences: sents.Add sent: Next然后将sends用于您的主要For Each循环即可。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何获得所有修订版本中已关闭/已删除的Subversion分支的列表?

来自分类Dev

致命:修订版本'$ GIT_COMMIT''

来自分类Dev

获取.docx文件的修订版本数

来自分类Dev

使用VBA查找MS Office修订版和内部版本

来自分类Dev

使用变更提要时,是否有办法在PouchDB中获取文档的所有修订版本?

来自分类Dev

使用更改提要时,是否有办法在PouchDB中获取文档的所有修订版本?

来自分类Dev

修订版本合并范围与仅头部修订版本之间有什么区别?

来自分类Dev

TortoiseSVN-“从此修订版本还原更改”与“从此修订版本还原”

来自分类Dev

是否有与Perforce的“文件已同步到以前的修订版本”图标类似的Tortoise SVN图标

来自分类Dev

在Perforce中知道文件的修订版本的变更列表编号

来自分类Dev

flask如何迁移以跟踪哪个修订版本ID是当前的?

来自分类Dev

吉特 如何检查HEAD之后的修订版本?

来自分类Dev

svn更新报告的修订版本与svn日志不同

来自分类Dev

特定修订版本范围内的Git日志输出

来自分类Dev

svn:具有匹配修订版本的外部

来自分类Dev

如何查询Mercurial以获取引入给定文件的修订版本?

来自分类Dev

如何撤消tortoisesvn中的“从此修订版本还原更改”

来自分类Dev

乌龟SVN过滤器日志的修订版本

来自分类Dev

使用Python将特定文本替换为修订版本

来自分类Dev

我该如何回到特定的修订版本?

来自分类Dev

OneDrive和多个文件版本/修订版

来自分类Dev

如何在svnsync同步中跳过修订版本

来自分类Dev

如何查询Mercurial以获取引入给定文件的修订版本?

来自分类Dev

使用git show获得比给定修订版本新的更改

来自分类Dev

flask如何迁移以跟踪哪个修订版本ID是当前的?

来自分类Dev

CVS知道对单个文件的特定修订版本更改

来自分类Dev

etcd v2 修订版/版本

来自分类Dev

给定特定的修订版本,如何将文件与工作副本或主要修订版本进行比较或比较?

来自分类Dev

P4 - 如果所有文件的修订版本不同,则回滚到文件夹中文件的先前修订版本

Related 相关文章

  1. 1

    如何获得所有修订版本中已关闭/已删除的Subversion分支的列表?

  2. 2

    致命:修订版本'$ GIT_COMMIT''

  3. 3

    获取.docx文件的修订版本数

  4. 4

    使用VBA查找MS Office修订版和内部版本

  5. 5

    使用变更提要时,是否有办法在PouchDB中获取文档的所有修订版本?

  6. 6

    使用更改提要时,是否有办法在PouchDB中获取文档的所有修订版本?

  7. 7

    修订版本合并范围与仅头部修订版本之间有什么区别?

  8. 8

    TortoiseSVN-“从此修订版本还原更改”与“从此修订版本还原”

  9. 9

    是否有与Perforce的“文件已同步到以前的修订版本”图标类似的Tortoise SVN图标

  10. 10

    在Perforce中知道文件的修订版本的变更列表编号

  11. 11

    flask如何迁移以跟踪哪个修订版本ID是当前的?

  12. 12

    吉特 如何检查HEAD之后的修订版本?

  13. 13

    svn更新报告的修订版本与svn日志不同

  14. 14

    特定修订版本范围内的Git日志输出

  15. 15

    svn:具有匹配修订版本的外部

  16. 16

    如何查询Mercurial以获取引入给定文件的修订版本?

  17. 17

    如何撤消tortoisesvn中的“从此修订版本还原更改”

  18. 18

    乌龟SVN过滤器日志的修订版本

  19. 19

    使用Python将特定文本替换为修订版本

  20. 20

    我该如何回到特定的修订版本?

  21. 21

    OneDrive和多个文件版本/修订版

  22. 22

    如何在svnsync同步中跳过修订版本

  23. 23

    如何查询Mercurial以获取引入给定文件的修订版本?

  24. 24

    使用git show获得比给定修订版本新的更改

  25. 25

    flask如何迁移以跟踪哪个修订版本ID是当前的?

  26. 26

    CVS知道对单个文件的特定修订版本更改

  27. 27

    etcd v2 修订版/版本

  28. 28

    给定特定的修订版本,如何将文件与工作副本或主要修订版本进行比较或比较?

  29. 29

    P4 - 如果所有文件的修订版本不同,则回滚到文件夹中文件的先前修订版本

热门标签

归档