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,提问作者김동진
相关产品推荐
相关产品推荐

