Hướng dẫn Ping IP bằng excel

Liên hệ QC

saobekhonglac

Thành viên mới
Tham gia
1/11/08
Bài viết
1,565
Được thích
1,454
Giới tính
Nam
Hướng dẫn Ping IP

Chào anh/chị.

Công việc của em hàng ngày vào IP của các nơi và lấy dữ liệu. Nếu khi vào IP của 1 nơi nào đó mà đang bị mất kết nối thì máy tính sẽ bị treo và mất thời gian xử lý. Em nhờ anh chị làm giúp em file excel test IP xem địa chỉ IP nào đang mất kết nối để em biết và không vào nó (bình thường em làm thủ công ping tay trên cmd (có hơn 30 IP nên ping rất mất thời gian).

Cám ơn anh/chị.
 
Lần chỉnh sửa cuối:
Chào anh/chị.

Công việc của em hàng ngày vào IP của các nơi và lấy dữ liệu. Nếu khi vào IP của 1 nơi nào đó mà đang bị mất kết nối thì máy tính sẽ bị treo và mất thời gian xử lý. Em nhờ anh chị làm giúp em file excel test IP xem địa chỉ IP nào đang mất kết nối để em biết và không vào nó (bình thường em làm thủ công ping tay trên cmd (có hơn 30 IP nên ping rất mất thời gian).

Cám ơn anh/chị.

Nếu chỉ kiểm tra xem IP nào đó có kết nối hay không thì có thể code đơn giản thế này:
Mã:
Function CheckConnection(ByVal IPAddress As String) As Boolean
  Dim objWMI As Object, objItem As Object
  Set objWMI = GetObject("winmgmts:{impersonationLevel=impersonate}"). _
       ExecQuery("Select * from Win32_PingStatus Where Address = '" & IPAddress & "'")

  For Each objItem In objWMI
    CheckConnection = (objItem.StatusCode = 0)
  Next
End Function
Giờ hãy liệt kê các địa chỉ IP vào cột A, chẳng hạn từ A1 đến A100 rồi chạy code sau:
Mã:
Sub Test()
  Dim item, n As Long
  Dim bChk As Boolean
  With Range("A1:A100")
    ReDim arr(1 To .Rows.Count, 1 To 1) As String
    For Each item In .Value
      n = n + 1
      If item Like "*.*.*.*" Then
        bChk = CheckConnection(item)
        If bChk Then arr(n, 1) = "Connected"
      End If
    Next
    .Offset(, 1).Value = arr
  End With
  MsgBox "Xong!"
End Sub
 
Tìm trên mạng thấy cái này cũng ngon nè:
Mã:
Function CheckConnection(ByVal sHost As String) As Boolean
  Dim sComm As String, ret
  sComm = "ping.exe -n 1 -w 1000 " & sHost & " | find ""TTL="" > nul 2>&1"
  ret = CreateObject("Wscript.Shell").Run("cmd /u /c " & sComm, 0, True)
  CheckConnection = (ret = 0)
End Function
Sub Test2()
  Dim item, n As Long
  Dim bChk As Boolean
  With Range("A1:A100")
    ReDim arr(1 To .Rows.Count, 1 To 1) As String
    For Each item In .Value
      n = n + 1
      If item <> Empty Then
        bChk = CheckConnection(item)
        If bChk Then arr(n, 1) = "Connected"
      End If
    Next
    .Offset(, 1).Value = arr
  End With
  MsgBox "Xong!"
End Sub
Đúng thứ mình thích luôn (thích hơn code đầu vì dễ hiểu hơn)
 
Chào anh/chị.

Công việc của em hàng ngày vào IP của các nơi và lấy dữ liệu. Nếu khi vào IP của 1 nơi nào đó mà đang bị mất kết nối thì máy tính sẽ bị treo và mất thời gian xử lý. Em nhờ anh chị làm giúp em file excel test IP xem địa chỉ IP nào đang mất kết nối để em biết và không vào nó (bình thường em làm thủ công ping tay trên cmd (có hơn 30 IP nên ping rất mất thời gian).

Cám ơn anh/chị.
Nếu bạn đã thường xuyên thực hiện với MSDos thì sử dụng luôn file Batch hay CMD mà thực hiện Ping cho nhanh
Bạn có thể làm như sau:
Tạo 1 file Batch bằng cách mở Notepad
đánh đoạn lệnh sau:

Mã:
@echo off
for /f "delims=" %%a in (IPlist.txt) do ping -n 1 %%a >nul && (echo %%a ok >>IPresult.txt) || (echo %%a failed to respond >>IPresult.txt)
pause
lưu lại với đuôi .bat (hoặc cmd cũng được)

Đồng thời tạo 1 file IPlist.txt với các thông tin địa chỉ IP trong đó (đặt file này cùng thư mục với file Bat/ CMD kia).
Sau đó chạy file bat/cmd kia là xong. Kết quả danh sách các IP kết nối dược và không kết nối được ghi vào file IPresult.txt trong cùng thư mục của file bat/cmd.
 
Web KT

Bài viết mới nhất

Back
Top Bottom