【问题标题】:Check if file exists with filesystemobject使用 filesystemobject 检查文件是否存在
【发布时间】: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 这将输出 TrueFalse 以及 sFile 中的值,这应该是文件名的路径。
  • 我使用了 Do While 循环,因为文件名不固定,是动态的
  • 我添加了 sFile 变量值的快照以及使用来自 Widnows 的 Copy as Path 命令时的路径

标签: excel vba


猜你喜欢
  • 2011-06-26
  • 2012-07-19
  • 1970-01-01
  • 2017-10-02
  • 2021-12-25
  • 1970-01-01
相关资源
最近更新 更多