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

VBA中Dir函数匹配指定CSV文件提示不存在问题求助

问题原因及解决方案

核心问题

你的代码存在两个关键错误导致文件找不到:

  • 路径拼接用了正斜杠/,Windows系统路径必须使用**反斜杠**
  • 未确保工作簿路径与文件名之间的分隔符正确,当ThisWorkbook.Path结尾无反斜杠时,会拼接出错误路径(比如变成C:\Users\fauus\Desktop\람세스 제어반* (2).csv,缺失路径分隔符)

修正后的代码

Sub a()
    Dim copy_range As Variant
    Dim targetFileName As String
    Dim wb As Workbook
    
    ' 正确拼接路径:用反斜杠分隔,确保路径与文件名的分隔符正确
    targetFileName = Dir(ThisWorkbook.Path & "\* (2).csv")
    
    ' 先检查是否找到文件,避免运行报错
    If targetFileName <> "" Then
        ' 拼接完整文件路径并打开工作簿
        Set wb = Application.Workbooks.Open(Filename:=ThisWorkbook.Path & "\" & targetFileName)
        copy_range = wb.Sheets(1).Range("A1:C288").Value
        wb.Close SaveChanges:=False ' 明确关闭不保存,避免弹窗
        
        Sheets(2).Range("A1:C288") = copy_range
    Else
        MsgBox "未找到匹配的(2).csv文件"
    End If
End Sub

关键改进点

  • 将路径分隔符替换为Windows支持的\
  • 拼接完整路径时,确保工作簿路径与Dir返回的文件名之间加上\
  • 新增文件存在性检查,避免因找不到文件触发运行错误
  • 用变量wb引用打开的工作簿,替代不可靠的ActiveWorkbook
  • 关闭工作簿时明确SaveChanges:=False,消除不必要的保存弹窗

额外说明

如果需要精准定位20222022(2).csv而非用通配符匹配,可直接指定文件名:

targetFileName = "20222022(2).csv"

内容的提问来源于stack exchange,提问作者김동진

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 15:35:26