带距离计算的Google Maps宏联网校验及功能适配需求问询
实现带网络检查的Google Maps距离计算宏
没问题,我帮你把网络检查逻辑整合到现有宏里,下面是完整的VBA代码,完全满足你的需求:
Sub Calculate() Application.ScreenUpdating = False ' 先检查网络连接状态 Dim hasInternet As Boolean hasInternet = IsNetworkConnected() If Not hasInternet Then ' 无网络时弹出提示框 MsgBox "No internet connection available, therefore no distance calculation possible.", vbInformation, "Network Unavailable" ' 在目标字段填充指定文本 Range("P32:Y32").Value = "No distance available" ' 跳过距离计算,直接执行宏的剩余部分 GoTo ProceedWithRest End If ' -------------------------- ' 这里放你原本的Google Maps距离计算代码 ' 比如你原来的Range("P32:Y32").Formula = "=你的距离计算公式" ' -------------------------- ProceedWithRest: ' 宏的其余执行逻辑放在这里(比如后续的其他操作) Application.ScreenUpdating = True End Sub ' 辅助函数:检测网络连接状态 Private Function IsNetworkConnected() As Boolean Dim shellObj As Object Set shellObj = CreateObject("WScript.Shell") ' 通过ping Google公共DNS来验证网络(8.8.8.8是稳定的公共地址) Dim pingStatus As Integer pingStatus = shellObj.Run("ping -n 1 8.8.8.8", 0, True) ' ping返回0代表网络连通 IsNetworkConnected = (pingStatus = 0) Set shellObj = Nothing End Function
关键细节说明:
- 网络检测逻辑:用
IsNetworkConnected函数调用系统ping命令检测网络,选择8.8.8.8作为检测目标,确保结果可靠,避免因特定网站故障导致误判。 - 无网络处理流程:检测到断网时,先弹出提示框告知用户,然后自动在
P32:Y32区域填充No distance available,再通过GoTo直接跳转到宏的剩余部分,完全跳过距离计算步骤。 - 原有逻辑兼容:联网状态下会正常执行你原本的Google Maps距离计算代码,只需要把代码里的注释区域替换成你实际的计算逻辑即可。
- 性能优化:保留了
Application.ScreenUpdating的开关,避免宏运行时屏幕闪烁,提升体验。
注意事项:
- 如果你的宏原本有后续需要执行的代码,直接放在
ProceedWithRest标签之后就好。 - 部分企业环境可能限制
ping命令,这种情况下可以把网络检测逻辑换成尝试访问一个简单的HTTP接口,不过ping是最直接的系统级检测方式。
内容的提问来源于stack exchange,提问作者Max
相关产品推荐
相关产品推荐

