Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
24.04.2024 17:19:09
Anzeige
Archiv - Navigation
1348to1352
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

NetzwerkPC prüfen

NetzwerkPC prüfen
07.02.2014 14:53:39
WolfgangN
Hallo,
ich möchte auf einem Netzwerkdrucker eine Datei drucken. Zu überprüfen, ob der Netzwerkdrucker an ist, erfordert ein für meine Kenntnisse zu großen Aufwand. Ich teste jetzt, ob der Netzwerk PC an ist, was mir eigentlich auch reicht. Aus dem Internet habe ich mir das folgende Makro zusammengebastelt, welches auch geht. Trotzdem habe ich dazu einige Fragen:
Wie kann ich die For Each Schleife ändern, es wird ja nur ein PC gesucht?
Die Abfrage If objPing.StatusCode = 0 Then kann ich nicht ändern in 0, laut meiner Überwachung ist objPing.StatusCode immer Null. Wieso überhaupt Else ausgeführt wird ist mir unklar. Wie muß die korrekte If Abfrage lauten?
Vielen Dank und Gruß
Wolfgang
Private Sub CommandButton12_Click()
Dim Nesuch As Integer
Dim alterDrucker As String
'prüfen, ob PCDell an ist,
Dim objWMIService As Object
Dim colPings As Object, objPing As Object
On Error Resume Next
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
Set colPings = objWMIService.ExecQuery _
("Select * From Win32_PingStatus where Address = '" & "PCDell" & "'")
If Err = 0 Then
Err.Clear
'Ist dies nötig, da nur nach einem PC gesucht wird?
For Each objPing In colPings
If Err = 0 Then
Err.Clear
'Wie sieht die richtige If Abfrage aus?
If objPing.StatusCode = 0 Then
Else
MsgBox "PCDell nicht bereit !"
Exit Sub
End If
End If
Next
Err.Clear
End If

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: NetzwerkPC prüfen
07.02.2014 16:37:00
bst
Hi,
versuche das mal so. Das sollte M.E. eigentlich ausreichen.
cu, Bernd
--
Option Explicit
Private Sub CommandButton12_Click()
Const cstrPc As String = "PCDell"
Dim objWMIService As Object
Dim colPings As Object
Dim strQuery As String
strQuery = "Select * From Win32_PingStatus where Address = '" & cstrPc & "'"
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
Set colPings = objWMIService.ExecQuery(strQuery)
If Not colPings Is Nothing Then
MsgBox cstrPc & " ist da"
Else
MsgBox cstrPc & " ist nicht da"
End If
End Sub

Anzeige
AW: NetzwerkPC prüfen
07.02.2014 17:33:47
WolfgangN
Hallo Bernd,
vielen Dank, aber leider kommt immer die MsgBox: "ist da", also egal ob der Netzwerk PC an oder aus ist.
Ich hoffe Du kannst nochmal helfen.
Gruß
Wolfgang

AW: NetzwerkPC prüfen
07.02.2014 17:43:31
bst
Hi,
warte mal ein paar Minuten.
So weit mir bekannt ist wird bei allen Netzwerk-Dingen furchtbar ge-cached.
Wenn das nicht geht/reicht könnte man vielleicht den PC dazu zwingen das Netzwerk neu einzulesen,
das schaue ich mir aber nicht vor Montag an...
cu, Bernd

AW: NetzwerkPC prüfen
08.02.2014 18:14:34
WolfgangN
Hallo Bernd,
würde mich freuen, wenn Du weiter helfen könntest.
Viele Grüße
Wolfgang

Anzeige
AW: NetzwerkPC prüfen
10.02.2014 11:42:59
bst
Morgen,
nur nach Is Nothing zu fragen ist wohl zu wenig :-(
So sollte es nun aber gehen.
cu, Bernd
--
Option Explicit
Private Sub CommandButton12_Click()
Const cstrPc As String = "pcdell"
Dim objWMIService As Object
Dim colPings As Object
Dim strQuery As String
Dim bolFound As Boolean
strQuery = "Select * From Win32_PingStatus where Address = '" & cstrPc & "' AND StatusCode =  _
0"
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
Set colPings = objWMIService.ExecQuery(strQuery)
If Not colPings Is Nothing Then
If colPings.Count > 0 Then bolFound = True
End If
MsgBox IIf(bolFound, cstrPc & " ist da", cstrPc & " ist nicht da")
End Sub

Anzeige
AW: NetzwerkPC prüfen
10.02.2014 13:06:40
WolfgangN
Hallo Bernd,
vielen Dank, läuft perfekt.
Viele Grüße
Wolfgang

AW: NetzwerkPC prüfen
07.02.2014 17:47:08
fcs
Hallo Wolfgang,
Null und 0 sind unter VBA nicht identisch. Geht der Ping durch, dann wird der Status = 0, sonst bleibt er auf Null.
Mit dem On error Resume Next
entzieht sich das Makro jeglicher Kontrolle bei Fehlern.
Ohne die For-Next-Schleife hab ich es nicht hinbekommen.
Gruß
Franz
Private Sub CommandButton12_Click()
Dim Nesuch As Integer
Dim alterDrucker As String
'prüfen, ob PCDell an ist,
Dim objWMIService As Object
Dim colPings As Object, objPing As Object
On Error GoTo Fehler
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
Set colPings = objWMIService.ExecQuery _
("Select * From Win32_PingStatus where Address = '" & "PCDell" & "'")
'Ist dies nötig, da nur nach einem PC gesucht wird?
For Each objPing In colPings
'Wie sieht die richtige If Abfrage aus?
Debug.Print "StatusCode: " & objPing.StatusCode _
& "  | Path_.Server: " & objPing.Path_.server
If objPing.StatusCode = 0 Then
MsgBox "Ping zu " & objPing.Address & " kam durch !"
Else
MsgBox objPing.Address & " nicht bereit !"
End If
Next
Fehler:
With Err
Select Case .Number
Case 0
Case Else
MsgBox "Fehler-Nr.: " & .Number & vbLf & .Description, _
vbInformation + vbOKOnly, "Makro - objPing"
End Select
End With
End Sub

Anzeige
AW: NetzwerkPC prüfen
07.02.2014 18:32:19
WolfgangN
Hallo Franz,
danke für Deine Erklärungen und Fehlerbehandlung.
Gruß
Wolfgang

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige