You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

带距离计算的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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 04:02:21