VBA判断Excel文件存在则打开否则打开模板 存在分支失效问题求助
问题根源
- VBA的
Dir()函数仅返回匹配到的文件名本身,不会返回完整路径,原代码中把Dir()的返回值和完整路径Path & File & ".xlsm"做比对,永远不可能相等,所以存在文件的分支始终触发失败。 - 第二个判断逻辑错误:
Dir()找不到匹配文件时不会返回Error,只会返回空字符串,原判断条件逻辑完全不成立,只是碰巧走了对应分支而已。
修正后代码
Private Sub CmdEnter_Click() Dim Path As String Dim File As String Dim targetFile As String Path = Range("Search!B1").Value ' 自动补全路径末尾的反斜杠,避免路径拼接错误 If Right(Path, 1) <> "\" Then Path = Path & "\" File = TxtOrder.Value targetFile = Path & File & ".xlsm" ' 只需调用一次Dir判断文件是否存在即可 If Dir(targetFile) <> "" Then ' 文件存在则打开目标文件 Workbooks.Open Filename:=targetFile Else ' 文件不存在则打开模板 Workbooks.Open Filename:=Path & "QCSFormTrial.xlsm" End If ' 关闭启动器文件 Workbooks("QCSLaunch.XLSM").Close SaveChanges:=False End Sub
额外注意事项
- 要确保
Search!B1单元格存储的路径格式正确,且Excel有权限访问对应目录。 - 如果文件名输入框允许为空,建议额外增加非空判断,避免打开错误文件。
内容的提问来源于stack exchange,提问作者Wapalo
相关产品推荐
相关产品推荐

