Win10 Word2016 VBA:文件夹存在但Dir()<>""返回False问题
问题根因
这不是Dir函数运行异常,是你没匹配对它的参数规则:VBA的Dir函数如果不传入第二个属性参数,默认只会查找对应路径下的常规文件,不会匹配文件夹对象。所以哪怕你传的路径对应的文件夹真实存在,它也搜不到匹配项,返回空字符串,最终判断逻辑弹出False。
你之前在路径末尾加反斜杠的测试也不对,那种写法是让Dir去枚举目标路径下的文件内容,本质还是在找文件不是匹配文件夹本身,自然拿不到正确结果。
修复方案
要让Dir正确识别文件夹,必须给第二个参数传入vbDirectory常量,明确告诉函数这次要匹配的是目录(文件夹)属性的对象,修改后的测试代码如下:
Sub TestDetectFolder() ' 传入vbDirectory参数指定查找文件夹 MsgBox Dir("C:\Users\adres\Downloads\Captures", vbDirectory) <> "" End Sub
避坑提醒
- 传入文件夹路径时不要在末尾加反斜杠,加了之后Dir会直接去找目标文件夹下的第一个子项,不是匹配文件夹本身,很容易出现误判
- 如果要判断的文件夹带隐藏、系统属性,可以把参数写成
vbDirectory Or vbHidden Or vbSystem,避免因为文件夹属性特殊导致匹配失败 - 这个是VBA Dir函数的固有设计逻辑,和你使用的Windows 10、Word 2016环境没有关系,所有Office版本的VBA环境里Dir的判定规则都是一致的
内容的提问来源于stack exchange,提问作者James Well
相关产品推荐
相关产品推荐

