You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VBA项目中如何打开仅末尾名称动态变化的工作簿

解决VBA中打开开头固定、末尾动态工作簿的问题

看起来你已经拿到了当前工作簿的路径,接下来核心就是怎么精准匹配那些开头是OnHand、后面跟着动态编号和月份的工作簿对吧?这里给你一个实用的方案,用VBA的Dir函数结合通配符就能轻松搞定:

核心思路

利用通配符*来匹配动态变化的部分——*可以代表任意长度的任意字符,所以"OnHand *.xlsx"就能匹配所有以OnHand 开头、以.xlsx结尾的工作簿,不管中间的编号和月份怎么变。

完整代码示例

Sub OpenDynamicOnHandWorkbooks()
    Dim currentPath As String
    Dim targetFileName As String
    
    ' 获取当前工作簿路径,和你已有的代码衔接
    currentPath = ActiveWorkbook.Path
    ' 确保路径末尾有斜杠,避免拼接文件名时出错
    If Right(currentPath, 1) <> "\" Then
        currentPath = currentPath & "\"
    End If
    
    ' 用通配符查找第一个匹配的工作簿(这里假设是xlsx格式,可按需改成xls/xlsm)
    targetFileName = Dir(currentPath & "OnHand *.xlsx")
    
    ' 循环打开所有符合条件的工作簿
    Do While targetFileName <> ""
        Workbooks.Open currentPath & targetFileName
        ' 获取下一个匹配的文件名
        targetFileName = Dir
    Loop
End Sub

关键细节说明

  • 路径处理:加了个判断确保路径末尾带斜杠,不然拼接currentPath & targetFileName时会变成类似C:\FolderOnHand 066 May.xlsx这种错误格式
  • 通配符灵活调整:如果你的工作簿格式不是xlsx,直接把代码里的.xlsx改成对应的后缀就行,比如.xls或者.xlsm
  • 单文件需求:如果你只需要打开第一个匹配的文件,去掉循环部分,直接判断If targetFileName <> "" Then Workbooks.Open...就可以

内容的提问来源于stack exchange,提问作者PedroB

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.08 09:47:40