【发布时间】:2014-06-27 10:23:14
【问题描述】:
我正在做一个项目。我的目标是,从 excel 列表中对所有计算机执行 ping 操作,但无法弄清楚为什么它不起作用。我对这种编程语言很陌生,我确信我错过了一些东西,因为我收到错误消息:需要对象
这是我的代码
主要:
Sub pingall_Click()
Dim c As Range
c = Target.Name
For Each c In Range("A1:N50")
If (Left(c, 1) = "C" Or Left(c, 1) = "T") And IsNumeric(Right(c, 6)) And Len(c) = 7 Then
c = sPing(c)
If c = "timeout" Then
MsgBox "timeout"
ElseIf c < 16 And c > -1 Then
MsgBox "ok"
ElseIf c > 15 And c < 51 Then
MsgBox "not ok"
ElseIf c > 50 And c < 4000 Then
MsgBox "big delay"
Else
MsgBox "error"
End If
End If
Next c
End Sub
功能:
Public Function sPing(sHost) As String
Dim oPing As Object, oRetStatus As Object
Set oPing = GetObject("winmgmts:{impersonationLevel=impersonate}").ExecQuery _
("select * from Win32_PingStatus where address = '" & sHost & "'")
For Each oRetStatus In oPing
If IsNull(oRetStatus.StatusCode) Or oRetStatus.StatusCode <> 0 Then
sPing = "timeout" 'oRetStatus.StatusCode
Else
sPing = sPing & vbTab & oRetStatus.ResponseTime & Chr(10)
End If
Next
End Function
如果我写 sPing("") 可以得到结果,但我希望它得到列表中 pc-s 的名称。 这只是脚本的测试版本,我现在用一台电脑测试它,这就是我使用“MsgBox”的原因。
谢谢
【问题讨论】: