Ping是测试网络连接的一个常用命令,可以向特定的目的主机(某个IP)发送 ICMP(Internet Control Message Protocol 因特网报文控制协议)Echo 请求报文,根据返回数据包的情况,可以了解其有关状态,当然某些服务器可以设置不响应ICMP消息,那么PING这些服务器得到的结果也就无效了。
使用VBA开发一下和Internet相关的应用时,经常需要先测试网络主机是否可以触达,这时就需要使用PING命令,但是VBA中并没有提供这个命令,需要借助Wscipt来实现。
示例代码如下。
Sub demo()
Dim objWSShell, IP, strEcho
Set objWSShell = CreateObject("Wscript.shell")
IP = "127.0.0.1"
'IP = "123.123.123.123"
cmdping = "ping " & IP & " -n 1"
Set oExec = objWSShell.exec(cmdping)
Do Until oExec.stdout.AtEndOfStream
strEcho = strEcho & oExec.stdout.readline() & Chr(13)
Loop
Debug.Print strEcho
If InStr(strEcho, "Lost = 0 (0% loss)") Or InStr(strEcho, "丢失 = 0 (0% 丢失)") Then
MsgBox "网络测试通过"
Else
MsgBox "网络连接故障"
End If
End Sub
【代码解析】
第3行代码创建Wscript对象。
第4行代码指定目的主机IP地址,127.0.0.1代表本机。
第6行代码组合生成PING命令。
第7行代码执行PING命令。
第8~10行代码循环结构获取命令执行的回显。
第11行代码在立即窗口中输入回显结果。
第12行代码判断关键字是否存在,第13行和第15行输入相应结果。
执行代码结果如下图所示。