使用DIR函数的Excel VBA,带有通配符和来自单元格的值

时间:2018-02-15 20:49:16

标签: excel-vba wildcard vba excel

我对Excel VBA有点新,并且无法读取单元格值并使用它们来查找文件路径并打开文件。以下是一些相关的事实(希望这是足够的特异性,但如果我遗漏了其他相关信息,请告诉我)。

  • 我有相邻单元格中每个人的名字和姓氏,例如: F4中的名字和G4中的姓氏。
  • 我正在尝试打开的文件都以" LastName,FirstName"开头。但是在他们之后有不同的人物,他们不遵循模式。我试图使用通配符来弥补那些未知的角色。
  • 所有文件都存储在" Z:\ Documents \ Warehouse Personnel Updates \"它们都是.xlsx文件。

最终我要创建一个循环来为列出的每个人打开多个文件,但目前我只是专注于让一个人打开。

以下是我目前的代码:

Sub findFile()

Dim Folder As String
Dim FileName As String
Dim FirstName As String
Dim LastName As String

FirstName = Range("F4").Value
LastName = Range("G4").Value

Folder = "Z:\Documents\Warehouse Personnel Updates\"

FileName = Dir(Folder & LastName & ", " & FirstName & "*.xlsx")

Workbooks.Open FileName

当我运行时,我得到"运行时错误' 1004':抱歉,我们无法找到。"只是一个空格,然后是句号结束的句号。好像根本就没有读取文件名。

如果有人对我所缺少的东西有所了解,我将不胜感激!谢谢!

1 个答案:

答案 0 :(得分:1)

您可以在Dir中使用通配符打开工作簿。这只是一个例子......

Dim sName As String
'Declare the variable for the workbook.
sName = Dir(ThisWorkbook.Path & "\*Smith_John*")

    If sName <> "" Then
        Workbooks.Open Filename:=ThisWorkbook.Path & "\" & sName
    End If