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
相关产品推荐
相关产品推荐

