使用命令按钮打开现有文件夹时,VBA代码无法识别已存在文件夹
问题排查与修复
核心问题出在文件夹存在性判断的参数错误:
- 代码中
If fso.FolderExists(strT) = True Then这一行,传入的是strT(仅目标文件夹名,比如40550),而非拼接好的完整路径strFullPath。 - FileSystemObject的
FolderExists方法如果只传入文件夹名,会默认在当前Excel文件所在的目录下查找,而非你指定的网络共享路径,所以明明真实路径存在,却返回不存在的错误结果。
另外还有一个潜在问题:使用Shell打开路径时,如果路径包含空格(后续可能出现)会报错,建议给路径加上双引号包裹。
修复后的完整代码:
Private Sub cmbOpenFolder_Click() Const strP = "\\cftanaus1fs01\ASO_MSO\" 'Parent folder Dim strC As String 'Child folder, ex: 40000-49999 Dim strGc As String 'Grandchild folder, ex: 40500-40599 Dim strT As String 'Target folder, ex: 40550 Dim strFullPath As String 'Full path Dim fso As Object strC = Left(txtSuffix, 1) & "0000-" & Left(txtSuffix, 1) & "9999" 'Child folder, ex: 40000-49999 strGc = Left(txtSuffix, 3) & "00-" & Left(txtSuffix, 3) & "99" 'Grandchild folder, ex: 40500-40599 strT = txtSuffix 'Target folder, ex: 40550 strFullPath = strP & strC & "\" & strGc & "\" & strT 'Full path(单反斜杠即可表示VBA路径分隔符) Set fso = CreateObject("Scripting.FileSystemObject") ' Create FileSystemObject If fso.FolderExists(strFullPath) = True Then ' 改为检查完整路径 'MsgBox "Here you go!" Shell "explorer.exe """ & strFullPath & """", vbNormalFocus ' 用双引号包裹路径,避免空格问题 Else MsgBox "This folder does not exist." 'fso.CreateFolder strFullPath ' Code if you wanted to create a folder. End If End Sub
额外说明:路径拼接时\\可以简化为\,VBA中单个反斜杠就能正确表示路径分隔符,避免视觉冗余。
内容的提问来源于stack exchange,提问作者Yodelayheewho
相关产品推荐
相关产品推荐

