Excel宏从单元格ping IP

dpiehjr4  于 2023-11-20  发布在  其他
关注(0)|答案(2)|浏览(374)

我已经创建了我所有网络设备的Excel清单,我想做的是有一个宏,允许我用一个单击ping这些设备的IP。我得到了一些接近这个脚本:
Sub RunCommand()Dim cmd As String cmd =“ping“Call Shell(“xml. exe/c“& cmd,vbNormalFocus)End Sub
问题是,我正在寻找一种方法,让宏将所选单元格的值作为ping的地址添加进去,所以最后的命令应该是“ping [cell value]”,但我不知道如何实现。
创建并测试了JavaScript脚本

  1. Sub RunCommand()
  2. Dim cmd As String
  3. cmd = "ping "
  4. Call Shell("cmd.exe /c " & cmd, vbNormalFocus)
  5. End Sub

字符串
它可以工作,但需要逐个手动输入每个单元格值。
尝试过这个剧本的变体

  1. Sub RunCommand()
  2. Dim cmd As String
  3. Var = Range("b2").Value
  4. cmd = "ping "
  5. Call Shell("cmd.exe /c " & cmd, vbNormalFocus)
  6. End Sub


但是没能成功

evrscar2

evrscar21#

你可以这样做:

  1. Sub PingCheck()
  2. Dim resp As String, c As Range, v
  3. For Each c In ActiveSheet.Range("A2:A10")
  4. v = Trim(c.Value)
  5. If Len(v) > 0 Then
  6. resp = ExecShellCmd("ping " & v)
  7. c.Offset(0, 1).Value = resp
  8. End If
  9. Next c
  10. End Sub
  11. Public Function ExecShellCmd(FuncExec As String) As String
  12. ExecShellCmd = VBA.CreateObject("WScript.Shell") _
  13. .exec("cmd.exe /c " & FuncExec).stdout.readall
  14. End Function

字符串
EDIT:使用事件触发ping

  1. Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
  2. Dim v
  3. If Target.Column <> 1 Then Exit Sub 'restrict to (eg) Col A...
  4. v = Target.Value
  5. If Len(v) > 0 Then
  6. Target.Offset(0, 1).Value = ExecShellCmd("ping " & v)
  7. Cancel = True 'don't enter edit mode
  8. End If
  9. End Sub

展开查看全部
f0ofjuux

f0ofjuux2#

我可以通过使用这个来让它工作:

  1. Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  2. Dim IP As String
  3. IP = Target.Value
  4. If IP Like "*.*.*.*" Then
  5. Shell "cmd.exe /k ping " & IP, vbNormalFocus
  6. End If
  7. End Sub

字符串
它会查看所选单元格中的文本是否与IPv4地址匹配,然后运行ping。再次感谢您的帮助!

相关问题