Vba 正在检索上次修改的文件,该文件的名称为部分变量

Vba 正在检索上次修改的文件,该文件的名称为部分变量,vba,excel,Vba,Excel,我们有一个系统,可以自动下载数据并将其放入excel和其他表格中。我试图为主电子表格编写一个宏,检索某个文件的最新版本,以便编辑、复制并粘贴到主工作表中 检索文件时遇到问题,因为文件名包含日期 我对VBA还是一个新手,仍然只是把一些代码拼凑在一起,以得到一个可以工作的东西,但我找不到我想要的东西 文件名例如为“ML0003-每日订单输入信息-170927” 最后6个数字表示日期和每次的变化 这是我目前的代码: Dim dtTestDate As Date Dim sStartWB As

我们有一个系统,可以自动下载数据并将其放入excel和其他表格中。我试图为主电子表格编写一个宏,检索某个文件的最新版本,以便编辑、复制并粘贴到主工作表中

检索文件时遇到问题,因为文件名包含日期

我对VBA还是一个新手,仍然只是把一些代码拼凑在一起,以得到一个可以工作的东西,但我找不到我想要的东西

文件名例如为“ML0003-每日订单输入信息-170927” 最后6个数字表示日期和每次的变化

这是我目前的代码:

Dim dtTestDate As Date
    Dim sStartWB As String

    Const sPath As String = "D:\Berry\AddIn\Testing\"
    Const dtEarliest = #1/1/2010#

    dtTestDate = Date
    sStartWB = ActiveWorkbook.Name

    While ActiveWorkbook.Name = sStartWB And dtTestDate >= dtEarliest
        On Error Resume Next
        Workbooks.Open sPath & "ML0003 - Daily Order Entry Information - " & " ****** " & ".xls"
        dtTestDate = dtTestDate - 1
        On Error GoTo 0
    Wend

    If ActiveWorkbook.Name = sStartWB Then MsgBox "Earlier file not found."

我被假定asterix会允许任何字符出现在那里,但这似乎不起作用。有什么想法吗?

您需要使用
Dir
函数使用通配符查找文件,如下所示:

Dim sFilename As String
While ActiveWorkbook.Name = sStartWB And dtTestDate >= dtEarliest
    sFilename = Dir(sPath & "ML0003 - Daily Order Entry Information - *.xls*")
    If sFilename <> "" Then Workbooks.Open sPath & sFilename
Wend
Dim sFilename作为字符串
而ActiveWorkbook.Name=sStartWB和dtTestDate>=dtwest
sFilename=Dir(sPath和“ML0003-每日订单输入信息-*.xls*”)
如果是sFilename“”,则为工作簿。打开sPath&sFilename
温德

您可能想看看正则表达式:也许其他一些SO成员可以给您展示一个示例,因为它肯定是可行的。