VBA Ping ausführen inc. auswertung
Kleines VBA Script
Hallo,
Versuche einen Ping durchzuführen... die IP wird aus einer Liste geholt... (übergabe Funktioniert auch) der Ping wird ausgeführt aber ich erhalte 4 Stellige werte... die keinen Sinn ergeben. Obwohl der Ping korekt ausgeführt wird mit cmd /K kann ich ja live mitgucken.....
Ich vermute das hat was mit dem Datentyp zu tun... aber ich bin Anfänger auf dem Gebiet...
Vll. kann mir jemand helfen... schonmal danke
[Edit] scheint sich wohl um die TaskID zu Handeln
Vll. kann man das ja irgendwie anders machen... ?
Hallo,
Versuche einen Ping durchzuführen... die IP wird aus einer Liste geholt... (übergabe Funktioniert auch) der Ping wird ausgeführt aber ich erhalte 4 Stellige werte... die keinen Sinn ergeben. Obwohl der Ping korekt ausgeführt wird mit cmd /K kann ich ja live mitgucken.....
Ich vermute das hat was mit dem Datentyp zu tun... aber ich bin Anfänger auf dem Gebiet...
Vll. kann mir jemand helfen... schonmal danke
Private Sub Ping1_Click()
Dim nTime As String
Dim strIP As String
strIP = Me.[IPall] 'IP-Adresse wird aus einer Tabelle als Variable geholt
'nTime = Ping(strIP) 'funktioniert so nicht
nTime = Shell("cmd.exe /K ping " & strIP & " -n 1 -w 10")
If nTime > 0 Then
MsgBox "Rechner erreichbar: Pingzeit: " & nTime & " ..."
Else
MsgBox "Rechner nicht erreichbar!"
End If
End Sub
[Edit] scheint sich wohl um die TaskID zu Handeln
Vll. kann man das ja irgendwie anders machen... ?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 139389
Url: https://administrator.de/contentid/139389
Ausgedruckt am: 26.11.2024 um 14:11 Uhr
20 Kommentare
Neuester Kommentar
Hallo Cyberkey!
Der Rückgabewert (Double) enthält nur die Task-ID des Programms. Eventuell ist es sinnvoll, die Ausgabe per Pipe in eine Datei umzuleiten und dann über VBA auszulesen.
Gruß Dieter
Der Rückgabewert (Double) enthält nur die Task-ID des Programms. Eventuell ist es sinnvoll, die Ausgabe per Pipe in eine Datei umzuleiten und dann über VBA auszulesen.
Gruß Dieter
Hallo Cyberkey!
Liegt vermutlich auch an der Schreibweise der IP-Adresse (dazu gab es vor ein paar Tagen einen Thread hier) - Kurzfassung: Lass die führenden Nullen weg ...
Das "GoTo" solltest Du Dir besser abgewöhnen (es sei denn, Du schreibst Batch ):
Grüße
bastla
Liegt vermutlich auch an der Schreibweise der IP-Adresse (dazu gab es vor ein paar Tagen einen Thread hier) - Kurzfassung: Lass die führenden Nullen weg ...
Das "GoTo" solltest Du Dir besser abgewöhnen (es sei denn, Du schreibst Batch ):
If InStr(strPingResults, "Antwort von") > 0 Then
MsgBox ("Geht")
Else
MsgBox ("Geht nicht")
End If
bastla
Hallo Cyberkey!
Der Fehler liegt am Instr. Einfach mal eine "strPingResults" per MsgBox ausgeben.
Bei mir sieht die Rückgabe z.B. so aus:
oder so:
Gruß Dieter
Der Fehler liegt am Instr. Einfach mal eine "strPingResults" per MsgBox ausgeben.
Bei mir sieht die Rückgabe z.B. so aus:
ping wird ausgefhrt fr xxx.xxx.xxx.xx mit 32 bytes daten:
zeitberschreitung der anforderung.
ping-statistik fr xxx.xxx.xxx.xx:
pakete: gesendet = 1, empfangen = 0, verloren = 1
(100% verlust),
Ping wird ausgeführt für XXX.XXX.XXX.XXX mit 32 Byt
Antwort von XXX.XXX.XXX.XXX: Bytes=32 Zeit<1ms TTL=
Ping-Statistik für XXX.XXX.XXX.XXX:
Pakete: Gesendet = 1, Empfangen = 1, Verloren
(0% Verlust),
Ca. Zeitangaben in Millisek.:
Minimum = 0ms, Maximum = 0ms, Mittelwert = 0ms
Gruß Dieter
Hallo Cyberkey!
Gruß Dieter
Zitat von @Cyberkey:
Noch eine Sache.. dieses CMD Fenster Nervt.. und Verwirrt... es gibt doch so einen Hide Befehl ... kann mir den jemand
integrieren?
Me.Hide = nur versteckt und kann mit Me.Show wieder angezeigt werden. Zum Schließen "Unload Me" verwenden.Noch eine Sache.. dieses CMD Fenster Nervt.. und Verwirrt... es gibt doch so einen Hide Befehl ... kann mir den jemand
integrieren?
Gruß Dieter
Hallo Cyberkey!
Ich weiß jetzt leider nicht, ob Du das Fenster schließen oder nur ausblenden willst.
Ausblenden:
Gruß Dieter
Ich weiß jetzt leider nicht, ob Du das Fenster schließen oder nur ausblenden willst.
Ausblenden:
Private Sub Ping1_Click()
Dim ....
Me.Hide
....
....
Me.Show
End Sub
Gruß Dieter
Hallo Cyberkey!
Ups Sorry, ich habe etwas geschlafen Du meintest das CMD-Fenster und ich war irgendwie auf das Formular fixiert.
Ob und wie Du das CMD-Fenster steuern kannst, bin ich leider überfragt.
Gruß Dieter
Ups Sorry, ich habe etwas geschlafen Du meintest das CMD-Fenster und ich war irgendwie auf das Formular fixiert.
Ob und wie Du das CMD-Fenster steuern kannst, bin ich leider überfragt.
Gruß Dieter
Hallo Cyberkey!
Soferne Du kein Windows 2000 berücksichtigen musst, wäre es so wohl eher in Deinem Sinn:
Hinsichtlich "
Grüße
bastla
Soferne Du kein Windows 2000 berücksichtigen musst, wäre es so wohl eher in Deinem Sinn:
strTarget = "010.128.008.035" 'IP address or hostname
Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_PingStatus Where Address = '" & strTarget & "'")
For Each objItem in colItems
If objItem.StatusCode = 0 Then
MsgBox "Geht"
End If
Next
.Run
" bzw ".Exec
": Kein Vorteil ohne Nachteil: Mit ".Run
" kannst Du zwar das CMD-Fenster verstecken, aber nicht (wie es ".Exec
" erlaubt) unmittelbar die Ausgabe auslesen - daher müsstest Du dann doch die Variante über eine "Temp-Datei" nehmen ...Grüße
bastla
Hallo Cyberkey!
Versuchs mal so:
Wert als Datentyp Text:
Wert als Datentyp Zahl:
Gruß Dieter
Versuchs mal so:
Wert als Datentyp Text:
DoCmd.RunSQL "UPDATE Ip_adressen SET Online='WERT' WHERE IPall='" & strTarget & "'"
DoCmd.RunSQL "UPDATE Ip_adressen SET Online=WERT WHERE IPall='" & strTarget & "'"
Gruß Dieter