首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >错误的Application.Documents枚举

错误的Application.Documents枚举
EN

Stack Overflow用户
提问于 2017-03-07 08:00:07
回答 1查看 67关注 0票数 0

我的问题很短。不幸的是,我的例子需要大量的文本。

短版

通常,如果我只打开了一些文件,Application.Documents就能正常工作。但是过了一段时间(打开/关闭其他文件等等),返回的枚举通常是,但并不总是错误!(即使下面的简单代码示例也会失败。)

代码语言:javascript
复制
Sub test_SaveAllUnsavedDocuments()

    Dim Doc As Object

    For Each Doc In Word.Application.Documents
        Debug.Print Doc.Name
    Next
    Debug.Print "Word.Application.Documents.Count: " & Word.Application.Documents.Count

End Sub

据我所知:

  • 一些文件名将被返回两次。
  • 有时返回的文件名总数是正确的,有时是不正确的。
  • 如果返回的文件名的总数是正确的:一些文件名就会丢失。
  • 并非所有的文件都会出现这种情况。但是如果它有reproducable.,那么就是
  • Application.Documents.Count总是返回正确的打开文件数。
  • 如果列出的文件名的数量最终等于实际打开的文件数的两倍,则错误将停止。

(我在另一台电脑上复制了这个,没有任何附加的Ons。)操作系统版本是: Windows 7,64位。)

长版

我打开一些文件。示例文件名:

“6-1-备件(RSM)-2.22-de-DE.docx” “6-1-备件(RSM)-2.22-en-GB.docx” “6-1-备件(RSM)-2.22-en-US.docx”

我的程序返回:

6-1-备件(RSM)-2.22-en-US.docx 6-1-备件(RSM)-2.22-en-GB.docx 6-1-备件(RSM)-2.22-de-DE.docx Word.Application.Documents.Count: 3

我打开另一个文件("Test.docx")或通过CTRL+N创建一个新文档。

Test.docx 6-1-备件(RSM)-2.22-en-US.docx 6-1-备件(RSM)-2.22-en-GB.docx 6-1-备件(RSM)-2.22-de-DE.docx Word.Application.Documents.Count: 4

现在错误开始了

我结束了"Test.docx“。我的程序返回:

6-1-备件(RSM)-2.22-en-US.docx 6-1-备件(RSM)-2.22-en-US.docx 6-1-备件(RSM)-2.22-en-GB.docx 6-1-备件(RSM)-2.22-de-DE.docx Word.Application.Documents.Count: 3

有一个,一个重复的

重复一遍,我的程序就会返回:

6-1-备件(RSM)-2.22-en-US.docx 6-1-备件(RSM)-2.22-en-GB.docx 6-1-备件(RSM)-2.22-en-US.docx 6-1-备件(RSM)-2.22-en-GB.docx 6-1-备件(RSM)-2.22-de-DE.docx Word.Application.Documents.Count: 3

有两个副本,

重复一遍,我的程序就会返回:

6-1-备件(RSM)-2.22-en-US.docx 6-1-备件(RSM)-2.22-en-GB.docx 6-1-备件(RSM)-2.22-de-DE.docx 6-1-备件(RSM)-2.22-en-US.docx 6-1-备件(RSM)-2.22-en-GB.docx 6-1-备件(RSM)-2.22-de-DE.docx Word.Application.Documents.Count: 3

这里有的三个副本,!和:现在列出的文件名的数量等于实际打开的文件数的两倍!

我再次重复这个和我的过程返回:

6-1-备件(RSM)-2.22-en-US.docx 6-1-备件(RSM)-2.22-en-GB.docx 6-1-备件(RSM)-2.22-de-DE.docx Word.Application.Documents.Count: 3

无论我现在做什么,返回的列表都是(并且仍然)正确的,直到我关闭并重新打开文档。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-10 08:46:32

我听说过For ..Each循环不可靠,但这是我第一次遇到实际的示例。下面的代码不会产生该错误。

亚test_SaveAllUnsavedDocuments() Dim Doc作为对象Dim I作为整数I=1 To Word.Application.Documents.Count Debug.Print Documents(i).Name Next Debug.Print " Word.Application.Documents.Count:“&Word.Application.Documents.Count 结束子对象

起初,我试图将Doc声明为Document,但这并没有什么区别。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42643082

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档