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

时间:2018-03-06 15:04:02

标签: vba excel-2016

我正在尝试使用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 sytax不正确还是我遗漏了其他东西?

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

C:\Users\gbrown\OneDrive - My Company\REVPRO\Input Data\2018\
January\CB947 (4).xls

1 个答案:

答案 0 :(得分:0)

  1. 启用Option Explicit
  2. 你不能这样声明变量,dpath是变种
  3. 路径中有两个斜杠
  4. 让我们为您的Dir通话添加vbNormal,以防万一
  5. 这是为我工作的:

        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
    

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