2015-11-04 22 views
-1

我完全不了解VB,但我试图在word文档中编译一个快速的ping测试宏来测试一些恶意软件沙盒软件。但是,我不断收到运行时424错误。VB ping宏 - 需要的对象

我已经做了一些研究,但对VB的0知识,我没有找到一个解决方案。代码如下。

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 

谢谢。

+0

嘿那里,看看这个职位。 http://stackoverflow.com/questions/21020077/ping-ip-address-with-vba-code-and-return-results-in-excel –

+0

对于Excel电子表格肯定。我仍然不知道自己在用VBA做什么,这会如何转化为Word宏?我对错误处理没有兴趣,我从字面上只需要ping和观察虚拟机中的流量。 – Sevaara

回答

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