VBA-Ping zu Rechnernamen senden
Schritt-für-Schritt-Anleitung
-
Öffne Excel und drücke ALT + F11
, um den VBA-Editor zu öffnen.
-
Füge ein neues Modul hinzu: Klicke im Menü auf Einfügen
> Modul
.
-
Kopiere folgenden Code in das Modul:
Option Explicit
Public Const MIN_SOCKETS_REQD As Long = 1
Private Const SOCKET_ERROR As Long = -1
Private Declare Function GetHostByName Lib "wsock32.dll" Alias "gethostbyname" (ByVal Hostname As String) As Long
Private Declare Function WSAStartup Lib "WSOCK32" (ByVal wVersionRequired As Long, lpWSAdata As WSAdata) As Long
Private Declare Function WSACleanup Lib "wsock32.dll" () As Long
Private Type WSAdata
wVersion As Integer
wHighVersion As Integer
szDescription(0 To 255) As Byte
szSystemStatus(0 To 127) As Byte
iMaxSockets As Integer
iMaxUdpDg As Integer
lpVendorInfo As Long
End Type
Public Function Lng_IP_von_Hostname(Hoststring As String) As Long
Dim strHostname As String * 256, lp_to_Hostent As Long
On Error Resume Next
If Not Initialisierung() Then Exit Function
strHostname = Hoststring & vbNullChar
lp_to_Hostent = GetHostByName(strHostname)
If lp_to_Hostent = 0 Then
' Rechner NICHT vorhanden
WSACleanup
Exit Function
End If
' Rechner vorhanden
WSACleanup
End Function
Private Function Initialisierung() As Boolean
Dim udtWSAData As WSAdata
If WSAStartup(MIN_SOCKETS_REQD, udtWSAData) = SOCKET_ERROR Then
Initialisierung = False
Exit Function
End If
Initialisierung = True
End Function
-
Ändere Hoststring
im Code auf den Namen des Rechners, den du pingen möchtest.
-
Führe die Subroutine aus, um die Verbindung zu überprüfen.
Häufige Fehler und Lösungen
-
Fehler: Rechner nicht gefunden
Lösung: Überprüfe, ob der Rechnername korrekt ist und ob der Rechner im Netzwerk eingeschaltet ist.
-
Fehler: WSAStartup schlägt fehl
Lösung: Stelle sicher, dass das Internet Protocol (TCP/IP) korrekt installiert ist und der Computer über die notwendigen Berechtigungen verfügt.
Alternative Methoden
Eine alternative Möglichkeit, einen Ping in Excel durchzuführen, ist die Verwendung der Shell
-Funktion, um den Windows-Ping-Befehl direkt auszuführen:
Sub PingRechner()
Dim result As String
result = Shell("cmd.exe /C ping -n 1 -w 200 Rechnername", vbHide)
End Sub
Ersetze Rechnername
durch den tatsächlichen Namen des Rechners, den du überprüfen möchtest.
Praktische Beispiele
Hier ist ein Beispiel, wie du eine Liste von Rechnernamen pingen kannst:
Sub PingMehrereRechner()
Dim Rechner As Variant
Dim Ergebnis As String
Dim RechnerListe As Variant
RechnerListe = Array("Rechner1", "Rechner2", "Rechner3") ' Liste der Rechnernamen
For Each Rechner In RechnerListe
Ergebnis = Shell("cmd.exe /C ping -n 1 -w 200 " & Rechner, vbHide)
' Ergebnisse verarbeiten oder ausgeben
Next Rechner
End Sub
Tipps für Profis
- Timeout anpassen: Du kannst die Zeitüberschreitung für den Ping-Befehl mit der Option
-w
anpassen. Setze den Wert auf die gewünschte Millisekunden.
- Ergebnisse protokollieren: Speichere die Ergebnisse des Pings in einer Excel-Tabelle, um die Verfügbarkeit mehrerer Rechner zu überwachen.
FAQ: Häufige Fragen
1. Wie kann ich den Ping-Befehl in Excel ausführen?
Du kannst den Ping-Befehl in Excel mit VBA ausführen, indem du das Shell-Kommando oder spezielle API-Funktionen nutzt.
2. Funktioniert das auch in älteren Versionen von Excel?
Ja, der VBA-Code sollte in den meisten modernen Excel-Versionen funktionieren, solange die erforderlichen Netzwerkprotokolle installiert sind.
3. Warum bekomme ich einen Fehler beim Ping eines Rechners?
Stelle sicher, dass der Rechner eingeschaltet ist, korrekt im Netzwerk konfiguriert ist und du die richtigen Berechtigungen hast.