You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VBA遍历文件时用""替代Dir仅输出一个文件,求StrFile = Dir的含义

VBA中StrFile = Dir的具体含义

VBA的Dir函数是带状态的搜索工具:

  • 第一次调用带路径参数的Dir(比如你的代码里StrFile = Dir("c:\testfolder\*")),它会返回目标目录下的第一个匹配文件/文件夹名称,同时自动记录当前的搜索上下文(包括目标路径、匹配规则)。
  • 当你不带任何参数调用Dir(也就是StrFile = Dir)时,它会基于之前保存的搜索上下文,返回下一个符合规则的文件/文件夹名称;如果已经遍历完所有匹配项,就返回空字符串。

你把代码里的StrFile = Dir改成StrFile = ""后,循环只打印一个文件的原因很简单:第一次拿到第一个文件名并打印后,直接把StrFile设为空,循环条件Len(StrFile) > 0不成立,循环直接终止,自然不会继续遍历后续文件。

正确的遍历代码应该是这样的:

Sub LoopThroughFiles()
    Dim StrFile As String
    StrFile = Dir("c:\testfolder\*")
    Do While Len(StrFile) > 0
        Debug.Print StrFile
        StrFile = Dir ' 不带参数调用,获取下一个文件
    Loop
End Sub

内容的提问来源于stack exchange,提问作者Peace

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 21:05:03