【发布时间】:2022-06-10 17:40:50
【问题描述】:
我创建了一个 Do While 循环来遍历带有 .jpg 扩展名的文件,以便使用这样的代码发现第一个文件
fn = Dir(sPath & "*.jpg")
Do While fn <> ""
sFile = sPath & fn
Exit Do
fn = Dir
Loop
在代码的后面,我放了一行来检查文件是否存在,所以我就这样使用了FileSystemObject
Set fso = CreateObject("Scripting.FileSystemObject")
Debug.Print fso.FileExists(sFile)
但我在即时窗口中得到了False,尽管我希望返回True
文件路径看起来像C:\Users\Future\Desktop\Screenshot_2022-06-08-21-25-36-252_com.unicostudio.jpg
【问题讨论】:
-
无论如何都不会像你
Exit Do那样循环。您必须多次致电Dir()- 请参阅docs.microsoft.com/en-us/office/vba/language/reference/…。如果Dir()找到它,那么你就知道它存在,所以不需要.FileExists。几十年前,FSO 已经取代了 VBA 的内置文件功能。你应该只使用它们。 -
如果 FSO 说该文件不存在,则它不存在。为确保您拥有正确的路径,请将调试行更改为:
Debug.Print fso.FileExists(sFile), sFile这将输出True或False以及sFile中的值,这应该是文件名的路径。 -
我使用了 Do While 循环,因为文件名不固定,是动态的
-
我添加了 sFile 变量值的快照以及使用来自 Widnows 的 Copy as Path 命令时的路径