VB ping宏 - 需要的对象

时间:2015-11-04 14:58:56

标签: vb.net vba ping

我对VB一无所知,但我试图在word文档中编译快速ping测试宏来测试一些恶意软件沙箱软件。但是,我不断收到运行时424错误。

我做了一些研究,但由于对VB的了解不多,我未能找到解决方案。代码如下。

Sub Ping()

' Ping Macro

If My.Computer.Network.Ping("192.168.1.10") Then
  MsgBox ("Server pinged successfully.")
Else
  MsgBox ("Ping request timed out.")
End If

End Sub

我在这里明显遗漏了一些东西。我认为该对象将是消息框,但我错了。有谁知道我在这里失踪了什么?

编辑:调试显示第一行是问题。

If My.Computer.Network.Ping("192.168.1.10") Then

感谢。

1 个答案:

答案 0 :(得分:2)

My.Computer.Network.Ping()是一个VB.Net函数,在VBA中不可用。

从前段时间我有一个功能来获得ping时间,这应该让你去。
您可能只需要StatusCode = 0检查。

' strAddress = IP or name
Public Function PingTime(strAddress) As Long

    Dim objPing As Object, objStatus As Object

    ' Init: Assume error
    PingTime = -1

    On Error Resume Next
    Set objPing = GetObject("WinMgmts:{impersonationLevel=impersonate}").ExecQuery _
                           ("SELECT * FROM Win32_PingStatus WHERE Address = '" & strAddress & "' ")
    If Err.Number <> 0 Then
        Exit Function
    End If

    For Each objStatus In objPing
        If objStatus.StatusCode = 0 Then
            PingTime = objStatus.Properties_("ResponseTime").Value
            Exit For
        End If
    Next
    Set objStatus = Nothing
    Set objPing = Nothing

End Function