【发布时间】:2016-06-13 06:39:28
【问题描述】:
每次找到特定文件时,我都会进入文件夹目录并查看文件夹以获取特定数据。
如果我在一个文件夹中打开我要查找的文件,但它不在其中,我会收到调试错误。很明显,我需要测试目录以查看文件是否存在,如果不存在则不要尝试打开它(这很好,并非所有文件夹都有主题文件)。
DIR 函数是测试文件是否存在的首选,但因为我使用 DIR 函数来逐步浏览文件夹,所以我的测试表明我不能使用 DIR 来测试中间的特定文件我的代码,因为 VBA 在我逐步浏览文件夹时感到困惑。
如何在不使用 DIR 的情况下测试已知文件名的存在?我尝试了我找到的功能:
函数 FileExists(fullFileName As String) As Boolean FileExists = VBA.Len(VBA.Dir(fullFileName)) > 0 结束函数
不幸的是,我还没有弄清楚如何将其实际写入我正在构建的 SUB 中。我找到的样本(以及其他类似的样本),但通常并不清楚有抱负的新手需要什么。在这种情况下,不知道 LEN 和 DIR 中会发生什么,以及为什么在看起来像 DIM 语句的情况下需要完整文件名(因为 As Boolean)。我还发现,如果我尝试将这个函数放在我的子程序中,VBA 就会不高兴。
我可以尝试什么会奏效?我只想要一个函数周围的 IF 语句,它会告诉我文件是否存在。
【问题讨论】:
-
只要你不需要它在 Mac 上工作,你可以使用 Scripting.FileSystemObject msdn.microsoft.com/en-us/library/x23stk5t(v=vs.84).aspx
-
蒂姆,感谢您的参考。我提取了那里的内容,但没有得到预期的结果,因此我稍微增强了脚本以尝试提供帮助: Sub FileExistence()Dim fso Dim Folder As String Folder = Dir("c:\users\", vbDirectory) MsgBox文件夹集 fso = CreateObject("Scripting.FileSystemObject") If (fso.FileExists("c:\users\")) Then MsgBox " exists."否则 MsgBox " 不存在。"结束如果结束子
-
抱歉,新手。蒂姆,感谢您的参考,但它并没有给我预期的结果。我添加了 DIR & MSGBOX 以确认目录存在: Sub Test_File_Existence() Dim fso Dim Folder As String Folder = Dir("c:\users\", vbDirectory) MsgBox Folder Set fso = CreateObject("Scripting.FileSystemObject") If ( fso.FileExists("c:\users\")) 然后 MsgBox “存在”。否则 MsgBox " 不存在。" End If End Sub 我得到不同的结果。 DIR 给出了一个点,即用户中的第一个目录; IF 有 msgbox 说该文件不存在。 FSO 失败。 ???
-
通常最好在您的问题中添加任何新代码。使用 {} 按钮对其进行格式化,使其可读。
-
编辑您的问题
标签: function excel file-exists vba