我有一个用于处理Word文档的VBA脚本。该程序所做的第一件事是在一组定义的文件夹中创建文档的索引。然后它通过列表处理每个索引文档。
我遇到的问题是,它有时会决定找不到特定的文档,即使它先前已将文档编入索引,并且快速抽查也会显示文档位于正确的位置。
有人能说清楚为什么VBA会出现这种行为吗?
脚本使用Dir$
函数索引文件,使用Documents.Open
函数打开每个word文档进行处理。
示例代码:
ChangeFileOpenDirectory (folderName)
inputFileName = Dir$(folderName & "*.doc")
Do While inputFileName <> ""
... call various functions here ...
inputFileName = Dir$
Loop
块中调用的函数之一包含以下行:
Set currentDoc = Documents.Open(fileName:=docFileName, AddToRecentFiles:=False, Visible:=False)
这是代码失败的时刻。
答案 0 :(得分:0)
我发现的最烦人的事情之一是最近的文件链接作为文件本身与Dir一起返回。您可以使用FileSystemObject来检查文件类型。
答案 1 :(得分:0)
我复制/粘贴您的代码,它可以正常工作。
但是,它会打开(并隐藏)所有文件,当您在另一个目录中运行时,会打开其他文件并将其添加到打开的项目中(请查看VBA编辑器)。
我的唯一猜测是,经过一段时间后,你达到了允许的最大打开文件数量。
尝试添加
currentdoc.Close
之前
inputFileName = Dir$
答案 2 :(得分:0)
有几个原因,其中一些与其他答案重复:
你也可以试试这段代码......
Set fso = CreateObject("Scripting.FileSystemObject")
If Not fso.FileExists(file) Then ....
首先在VBE中启用Microsoft Scripting引用