使用带通配符的Dir函数打开文件的运行时错误

问题描述 投票:1回答:1

我正在尝试使用VBA在特定目录中打开.xls文件但由于VBA运行时错误而无法执行此操作。我需要在路径中使用通配符,因为文件名按月略有变化,但始终以“CB947”开头。我需要将CB947工作簿中的数据复制到我的主工作簿中。这是我到目前为止所拥有的:

Dim dpath, sFound As String

dpath = "C:\Users\gbrown\OneDrive - My Company\REVPRO\Input Data\2018\January\"

Set Master = ThisWorkbook
sFound = Dir(dpath & "\CB947*.xls")
Debug.Print dpath & sFound
If (sFound <> "") Then
    Workbooks.Open dpath & sFound
End If

当我到达上面的Debug.print命令时,立即窗口打印出正确的路径和文件名,所以我知道脚本正在找到正确的文件。它只是无法打开它。当我尝试运行上面的代码时,我收到以下错误:

VBA_error

我的DIR语法不正确还是我遗漏了别的东西?

编辑:这是我的Debug.Print命令在立即窗口中显示的内容:

C:\Users\gbrown\OneDrive - My Company\REVPRO\Input Data\2018\
January\CB947 (4).xls
vba excel-2016
1个回答
0
投票
  1. 启用Option Explicit
  2. 你不能用这种方式声明变量,dpath是一个变种
  3. 你的路径中有两个斜杠
  4. 让我们为您的Dir调用添加vbNormal,以防万一

这是为我工作的:

    Dim dpath As String
    Dim sFound As String
    dpath = "C:\Users\gbrown\OneDrive - My Company\REVPRO\Input Data\2018\January\"
    sFound = Dir(dpath & "CB947*.xls", vbNormal)
    Debug.Print dpath & sFound
    If (sFound <> "") Then
        Workbooks.Open dpath & sFound
    End If

注意:如果这对您不起作用,则可能存在权限问题。出于某些文件系统原因,可能会锁定或无法打开工作簿。

© www.soinside.com 2019 - 2024. All rights reserved.