У меня есть книга excel со списком имен хостов. В настоящее время я использую приведенный ниже код, чтобы получить IP-адрес каждого имени хоста и изменить цвет ячейки на красный и зеленый в зависимости от состояния сервера. Этот код работает в 99% случаев, но в некоторых случаях сервер отображается как недоступный. Но когда я вручную использую ping в cmd, он показывает, что сервер работает. Пингование вручную также показывает, что поездка туда и обратно не занимает особенно много времени, поэтому я не думаю, что тайм-аут является виновником.
У кого-нибудь есть идеи, почему это происходит?
Private Sub GetServerInfo_Click()
Dim i As Integer
Dim rowCount As Integer
rowCount = Worksheets("Inventory_Repository").Cells.SpecialCells(xlCellTypeLastCell).Row
For i = 3 To rowCount
Cells(i, 10).Value = sPing(Cells(i, 4).Value)
If InStr(Cells(i, 10), "Unavailable") > 0 Then
Cells(i, 10).Interior.Color = RGB(255, 0, 0)
Else
Cells(i, 10).Interior.Color = RGB(0, 255, 0)
End If
Next i
MsgBox ("IP has been updated")
End Sub
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 = "Unavailable"
Else
sPing = oRetStatus.ProtocolAddress
End If
Next
End Function