Первое имя у которого нет записи IP в ДНС, он пропустил и пошел дальше, потом он выявил IP и подставил, а на середине остановился по причине отсутствия записи в ДНС и выдал сообщение END и DEBUG
Public Sub ip()
Set objShell = CreateObject("WScript.Shell")
last = Range("A65536").End(xlUp).Row '- ïîñëåäíÿÿ ñòðîêà
For i = 2 To last
On Error GoTo Next_ 'ïåðåõîä ê ìåòêå
strIP = Range("A" & i & "").Value 'èìÿ ÏÊ
Set objScriptExec = objShell.Exec("nslookup.exe " & strIP) 'nslookup
strPingResult = objScriptExec.StdOut.ReadAll 'ïîëó÷àåì îòâåò
'Set objStdOut = objScriptExec.StdOut
arrayPingResult = Split(strPingResult, vbCrLf) 'ðàçáèâàåì íà ñòðîêè
arrayPCLine = Split(arrayPingResult(4), " ") ' íàñ èíòåðåñóåò ÷åòâåðòàÿ ñòðîêà
Range("B" & i & "") = arrayPCLine(2) ' 2 çíà÷åíèå â 2 ñòðîêå êàê ðàç è åñòü IP
Next_:
Next i
End Sub
Привет, помогите, есть макрос в Exel он берет имя машины в сети и ищет IP адрес и подставляет, но я не могу сделать так что бы он подставлял пустое значение если не nslookup-тся машина и выпадает завершить или редактирование, он останавливается если не нашел в ДНС запись. Как сделать чтобы он подставлял значение "не в сети" и дальше обрабатывал имена и подставлял IP?
Код
Public Sub ip()
Set objShell = CreateObject("WScript.Shell")
last = Range("A65536").End(xlUp).Row '- последняя строка
For i = 2 To last
strIP = Range("A" & i & "").Value 'имя ПК
Set objScriptExec = objShell.Exec("nslookup.exe " & strIP) 'nslookup
strPingResult = objScriptExec.StdOut.ReadAll 'получаем ответ
'Set objStdOut = objScriptExec.StdOut
arrayPingResult = Split(strPingResult, vbCrLf) 'разбиваем на строки
arrayPCLine = Split(arrayPingResult(4), " ") ' нас интересует четвертая строка
On Error Resume Next
Range("B" & i & "") = arrayPCLine(2) ' 2 значение в 2 строке как раз и есть IP
Next i
End Sub
Вышел из положения так, добавил строку. Но IP подставляет предыдущего.