VPN重连致网络驱动器断开的3304错误处理方案咨询
VPN重连后网络驱动器3304错误处理优化方案
方案一:带一键重连操作的错误提示
原代码仅告知错误原因,可优化为在提示后提供便捷的重连操作,无需用户手动打开文件资源管理器:
On Error GoTo ErrHandler ' 你的业务逻辑代码... ErrHandler: If Err.Number = 3304 Then ' 提示错误原因并询问是否重连 If MsgBox("错误代码: " & Err.Number & vbCrLf & _ "错误描述: " & Err.Description & vbCrLf & _ "原因:VPN断开重连后网络驱动器连接失效。" & vbCrLf & _ "是否立即重连网络驱动器?", vbYesNo + vbQuestion, "网络连接异常") = vbYes Then ' 替换为你的网络驱动器盘符或共享路径,例如"Z:"或"\\server\shared_folder" Dim targetPath As String targetPath = "Z:" ' 打开对应路径触发系统自动重连 Shell "explorer.exe " & targetPath, vbNormalFocus End If Else ' 处理其他未知错误 MsgBox "错误代码: " & Err.Number & vbCrLf & Err.Description End If Resume Next
方案二:自动静默重连(无弹窗提示)
捕获3304错误后自动触发网络驱动器重连,全程无需用户干预:
On Error GoTo ErrHandler ' 你的业务逻辑代码... ErrHandler: If Err.Number = 3304 Then ' 替换为你的网络驱动器盘符或共享路径 Dim targetPath As String targetPath = "Z:" ' 后台打开资源管理器触发重连 Dim wshShell As Object Set wshShell = CreateObject("WScript.Shell") wshShell.Run "explorer.exe " & targetPath, vbMinimizedNoFocus ' 等待1秒让系统完成重连,随后关闭资源管理器窗口 Application.Wait Now + TimeValue("00:00:01") ' 注意:窗口标题需根据系统语言调整,中文系统一般为"文件资源管理器" On Error Resume Next ' 防止窗口激活失败报错 wshShell.AppActivate "文件资源管理器" wshShell.SendKeys "%{F4}" ' 按下Alt+F4关闭窗口 On Error GoTo 0 ' 清除错误并继续执行原逻辑 Err.Clear Resume Next Else ' 处理其他未知错误 MsgBox "错误代码: " & Err.Number & vbCrLf & Err.Description End If
关键注意事项
- 务必将代码中的
targetPath替换为实际使用的网络驱动器盘符或共享文件夹路径 - 自动关闭窗口的逻辑依赖资源管理器的窗口标题,若系统语言非中文,需修改
AppActivate的参数 - 若网络驱动器需要身份验证,自动重连时可能弹出登录框,需确保用户已提前保存访问凭据
内容的提问来源于stack exchange,提问作者Deke
相关产品推荐
相关产品推荐

