VBA 打开带有部分名称的文件
VBA opening a file with partial name
我正在尝试打开一个将定期更新的文件。当前名称是“GDE Portfolio Characteristics 12.31.2021”,其想法是指示代码打开它,无论日期如何(即最后 10 个字符)。我应该只有一个文件夹中的文件具有这样的部分名称。
我使用的代码如下:
Workbooks.Open Filename:=ThisWorkbook.Path & "\Parametric GDE Portfolio Characteristics*.xlsx"
当运行它时,它似乎没有找到该文件。如果我改为使用文件的整个名称,它会起作用。
菜鸟问题,百思不得其解!
非常感谢
无法在 Open-statement 中使用通配符。但是,您可以使用
Dir
-获取真实文件名的命令,因为它允许通配符:
Dim fileName As String
fileName = Dir(ThisWorkbook.Path & "\Parametric GDE Portfolio Characteristics*.xlsx")
If fileName <> "" Then
Workbooks.Open Filename:=ThisWorkbook.Path & "\" & fileName
End If
这是一个更通用的方法:
Sub OpenFiles()
Dim Files As Collection
Set Files = ListFiles(ThisWorkbook.Path, "Parametric GDE Portfolio Characteristics*.xlsx")
Dim Filename As Variant
For Each Filename In Files
Workbooks.Open Filename:=Filename
Next
End Sub
Function ListFiles(FolderName As String, SearchString As String) As Collection
Set ListFiles = New Collection
Dim Filename As String
Filename = Dir(FolderName & "\" & SearchString)
If Len(Filename) = 0 Then Exit Function
Do While Filename <> ""
ListFiles.Add Filename
Filename = Dir()
Loop
End Function
我正在尝试打开一个将定期更新的文件。当前名称是“GDE Portfolio Characteristics 12.31.2021”,其想法是指示代码打开它,无论日期如何(即最后 10 个字符)。我应该只有一个文件夹中的文件具有这样的部分名称。
我使用的代码如下:
Workbooks.Open Filename:=ThisWorkbook.Path & "\Parametric GDE Portfolio Characteristics*.xlsx"
当运行它时,它似乎没有找到该文件。如果我改为使用文件的整个名称,它会起作用。
菜鸟问题,百思不得其解!
非常感谢
无法在 Open-statement 中使用通配符。但是,您可以使用
Dir
-获取真实文件名的命令,因为它允许通配符:
Dim fileName As String
fileName = Dir(ThisWorkbook.Path & "\Parametric GDE Portfolio Characteristics*.xlsx")
If fileName <> "" Then
Workbooks.Open Filename:=ThisWorkbook.Path & "\" & fileName
End If
这是一个更通用的方法:
Sub OpenFiles()
Dim Files As Collection
Set Files = ListFiles(ThisWorkbook.Path, "Parametric GDE Portfolio Characteristics*.xlsx")
Dim Filename As Variant
For Each Filename In Files
Workbooks.Open Filename:=Filename
Next
End Sub
Function ListFiles(FolderName As String, SearchString As String) As Collection
Set ListFiles = New Collection
Dim Filename As String
Filename = Dir(FolderName & "\" & SearchString)
If Len(Filename) = 0 Then Exit Function
Do While Filename <> ""
ListFiles.Add Filename
Filename = Dir()
Loop
End Function