VBA.Dir 和 FileSystemObject 无法正确返回 OneDrive 文件夹的 Files.Count

问题描述 投票:0回答:0

我有一些自动化代码递归处理本地 OneDrive for Business 文件夹中的文件夹结构:%UserProfile%\SPO_Domain\Site\Library

有数百个文件夹和数百个文件。

在一个文件夹中,这个简单的命令结构无法返回正确数量的文件,在我的示例中为 280:

CreateObject("Scripting.FileSystemObject").GetFolder(path).Files.Count

它错误地返回 200。VBA.Dir 函数也在文件夹中完全相同的位置失败,在具有此代码结构的 200 个文件处:

file = Dir(PATH)

Do While file <> ""
    x = x + 1
    Debug.Print x, file
    file = Dir()
Loop

它在第 201 次 Dir() 调用时失败,错误为 5“无效的过程调用或参数”,这是在返回最后一个文件后返回零长度字符串 ("") 之后调用 Dir() 时的行为。

其他包含超过 200 个文件的文件夹按预期工作。

如果我将整个文件夹复制到 C:\Temp 位置,FSO 和 DIR 方法都会按预期工作。

什么可能导致这种行为?

excel vba sharepoint onedrive fso
© www.soinside.com 2019 - 2024. All rights reserved.