Ping IP 地址并循环,直到距离另一个工作簿最多 50 英寸的范围



我有一个Excel工作簿,其中O列有很多来自不同子网的IP地址,例如192.168.0.0和192.168.1.0等。 我想从另一个工作簿中使用这些 IP 地址并 ping 每个子网 50 个地址的范围。 例如 192.168.0.1-192.168.0.50 和 192.168.1.0-192.168.1.50。 地址和状态应写入新工作簿中。

我有一个很好的ping代码,它在一列中ping地址并在另一列中给出结果。 我的问题是我没有写下所有的IP地址,而且列表是动态的,可能会发生变化。 我也无法将状态粘贴到新工作簿中,也不知道如何更改。

Sub GetIPStatus()
Dim Cell As Range
Dim ipRng As Range
Dim Result As String
'Workbook which contains data I want to use in the script
Dim wb As Workbook
Dim Wks As Worksheet
Set wb = Workbooks.Open(Filename:="C:TempRetrieveDataFrom.xlsm")
Set Wks = wb.Sheets("Datakom")
'Workbook where I want do write result in
Dim WorkB As Workbook
Dim Ws As Worksheet
Set WorkB = Workbooks.Open(Filename:="C:TempTest.xlsm")
Set Ws = WorkB.Worksheets("Test1")
Set ipRng = Wks.Range("O2")
Set RngEnd = Wks.Cells(Rows.Count, ipRng.Column).End(xlUp)
Set ipRng = IIf(RngEnd.Row < ipRng.Row, ipRng, Wks.Range(ipRng, RngEnd))
For Each Cell In ipRng
Result = GetPingResult(Cell)
WorkB.Cell.Offset(0, 2) = Result
If Result = "Connected" Then
WorkB.Cell.Offset(0, 3) = Now()
End If
Next Cell
End Sub

我没有收到错误,我只是错误工作簿中的信息。 另外,我不知道如何遍历每个IP地址的范围。

在 for 每个循环中,cells.offset 没有附加工作簿,因此 VBA 将值放在活动工作簿中。在 cells.offset 之前声明工作簿名称,这应该可以解决您的问题。

注意:我会先打开工作簿,然后将工作簿的名称设置为变量,否则当您调用设置为打开工作簿的变量时,它将继续打开该工作簿。

例如:

Dim wb As Workbook
Workbooks.Open(Filename:="C:TempTest.xlsm")
Set wb = Workbooks("Test.xlsm")
Set Wks = wb.Sheets("Datakom")

. . .

For Each Cell In ipRng
Result = GetPingResult(Cell)
wb.Cell.Offset(0, 2) = Result
If Result = "Connected" Then
wb.Cell.Offset(0, 3) = Now()
End If
Next Cell

相关内容

最新更新