VBA无法打开新建网络驱动器文件夹问题求助
解决VBA宏打开刚创建的文件夹问题
首先,我注意到你当前的修改虽然能实现目标,但存在重复拼接路径的冗余问题,而且原代码里dirName的赋值还有小错误(你写了Cells(4, i).Values,实际应该是Cells(i, 4).Value——行和列搞反了,单个单元格要用Value而非多单元格的Values)。
我们可以通过更优雅的方式优化代码,同时确保宏精准打开刚创建的文件夹:
- 把完整的新建文件夹路径存入
dirName变量,后续创建和打开操作都复用这个变量,避免重复写冗长路径 - 因为路径包含空格,调用
Shell时必须给路径加双引号,否则explorer.exe会把空格当成参数分隔符,无法正确识别路径 - 可选添加文件夹存在检查,避免
MkDir在文件夹已存在时报错
修改后的代码片段
If .Value = "Section 50" And Cells(i, 6) <> "" Then ' 拼接完整的新建文件夹路径,存入dirName变量 dirName = "\\richmond\data\Environment\Traffic & Transport\T&T - NetworkManagement\Street Works 2019-20\Licences\Section 50\Applications 2019-20\" & Cells(i, 4) & " (" & Cells(i, 12) & ")" ' 可选:先检查文件夹是否存在,避免创建时报错 If Dir(dirName, vbDirectory) = "" Then MkDir dirName End If ' 调用explorer打开新建文件夹,路径加双引号适配含空格的路径 Call Shell("explorer.exe """ & dirName & """", vbNormalFocus) End If
关键细节说明
- 复用dirName变量:把完整路径存在变量里,既减少重复代码,也降低写错路径的概率
- 路径加双引号:你的路径里有大量空格(比如
Traffic & Transport),不加双引号的话,Shell会把空格当成命令参数的分隔符,导致explorer找不到目标文件夹 - 文件夹存在检查:添加
Dir(dirName, vbDirectory) = ""的判断,可以避免文件夹已存在时,MkDir抛出“路径/文件访问错误”的提示
这样修改后,宏就能精准打开刚刚创建的文件夹,同时代码也更健壮、易维护。
内容的提问来源于stack exchange,提问作者ffc2004
相关产品推荐
相关产品推荐

