Excel 2010: Makro "Ping"

Pana

Lt. Commander
Registriert
Dez. 2005
Beiträge
1.522
Hi Forum!

Wichtige Infos gleich zu Beginn: Ich habe keinerlei VBA-Kenntnisse. Wenn mir jemand also helfen will, bitte für Dummies erklären :freak: Danke!

Ich habe eine Exel-Tabelle mit mehreren Zeilen und Spalten.

Spalte A: "Hostname"
Spalte B: "IP-Adresse" (Spalte ist leer)
Spalte C: "Status"

Jetzt brauche ich ein Makro, welches alle Hostnamen anpingt, in Spalte B die aufgelöste IP-Adresse einträgt und in Spalte C "Online" bzw. "Offline" einträgt, je nach dem ob der Ping erfolgreich war oder nicht.

Es wäre toll, wenn mir da jemand hjelfen könnte (und es so einfach wie möglich erklären kann, ich hatte noch nie etwas mit Makros in Excel zu tun).

Danke Leute!
 
Zuletzt bearbeitet:
Was ich damit möchte? Eine Exceltabelle haben, die automatisch bestimmte Spalten füllt. Was soll mir Dein Link bringen?
 
Ich habe auch keinen Plan was mir PING konkret zurückgibt…

Also würde ich die Adressen (kuzerhand) in ein große Batchdatei werfen, garniert mit der passenden PING-Syntax die das Resultat in eine andere Datei umlenkt die ich hinterher (nach Starten der Batch in XL) wiederum per XL öffne und in die Liste eintrage.

Das wenigstens als Strategiepapier.

CN8
 
Und warum antwortest Du hier, wenn Du keine Ahnung hast? Ehrlich, solche Kommentare kapiere ich einfach nicht. Ich habe eine konkrete Frage gestellt.

Die Antwort habe ich übrgiens mittlerweile selbst gefunden, es ist ganz einfach. Falles jemanden interessiert:

Code:
Sub GetPing()
    On Error Resume Next
    Set objhttp = CreateObject("MSXML2.ServerXMLHTTP.4.0")
    Dim ra As Range, cell As Range, PingResult As Variant
    Set ra = Range([A1], Range("A" & Rows.Count).End(xlUp))
    ra.Offset(, 1).Resize(, 2).ClearContents

    For Each cell In ra.Cells
        Computer$ = Trim(cell): IP = ""
          
            For Each PingResult In GetObject("winmgmts://./root/cimv2").ExecQuery _
                ("SELECT * FROM Win32_PingStatus WHERE Address = '" & Computer$ & "'")
                If IsObject(PingResult) Then IP = PingResult.ProtocolAddress
                If IsNull(PingResult.StatusCode) _
                Or PingResult.StatusCode <> 0 Then
                cell.Next.Next = "Computer did not respond."
                Else
                cell.Next.Next = "Computer responded."
                End If
            Next
            cell.Next = IP: DoEvents
    Next cell
    Set objhttp = Nothing
    MsgBox "Alle Hostnamen wurden überprüft"
End Sub
 
Zuletzt bearbeitet:
@Pana: Ernsthaft du kackst hier die Leute an, die so nett sind dir helfen zu wollen? Bin sprachlos über soviel Ignoranz und Unhöflichkeit, besonders weil der Tipp gar nicht so schlecht war und dein VBA-Skript umgangen hätte.

PS: Deine Lösung ist (nehme ich mal an) ein VBA-Skript? Vor dem Hintergrund, dass Du alles haarklein erklärt haben wolltest, wenn es in die Richtung geht wäre es imho nicht verkehrt gewesen zu erklären wo und wie man dieses Skript anwenden muss statt einfach nur ein paar Zeilen Code hier hinzuschmeissen...
 
  • Gefällt mir
Reaktionen: scheremypaskal
Ich kacke niemanden an. Und geholfen hat mir hier niemand. Im ernst: Meine Frage war ganz konkret formuliert. Die Postings, die dann kamen, hatten nichts - absolut nichts - mit meiner Frage zu tun. Sie waren geprägt von ahnungs- und sinnlosigkeit. Sie waren also in keinster Weise hilfreich oder relevant.

Und das muss man mal so deutlich sagen. Wenn jemand nach einem Hammer fragt, kann ich ihm doch nicht ein Stück Gouda mit Kräutern anbieten. Ich bin ein Freund klarer Worte und wenn Dich das sprachlos macht, solltest Du Dir ein dickeres Fell zulegen. Mit Ignoranz hat das übrigens nichts zu tun, ganz im Gegenteil: Die bisherigen Antworten waren durchzogen von ignoranz. Ignoranz gegenüber meiner präzisen Frage. Wenn ich eine Antwort nicht kenne, dann schweige ich einfach. Leider ist das heute wohl unüblich.

PS: Es ahndelt sich um ein VBA-Skript. Eine andere Möglichkeit, die in Excel funktioniert, kenne ich auch nicht.
 
Zuletzt bearbeitet:
Es gibt aber immer noch einen Unterschied zwischen "Freund klarer Worte" und unhöflichem Auftreten...

Deine Meinung hätte man auch nicht so harsch formulieren können. Nennt man Stil.

Aber das ist wohl eh eine Sackgasse, da wir wohl nicht auf einen Zweig kommen. Threat also closed.
 
Einfach mal den Inhalt meiner Postings lesen, quasi mit dem "Sachohr" und weniger mit dem "Beziehungsohr". Umgekehrt könnte man auch sagen, dass es sehr unhöflich ist, eine konkrete Frage mit komplett anderen Themen zu beantworten.
 
Eigentlich wollte ich nichts antworten…
Wenn ich sehe was das für ein Makro ist, mit Systemfunktionen wie CreateObject("MSXML2.ServerXMLHTTP.4.0") und GetObject("winmgmts://./root/cimv2").ExecQuery("SELECT * FROM Win32_PingStatus WHERE Address = '" & Computer$ & "'") die mir nur prinzipiell etwas sagen - dann halte ich das schon für überheblich wenn jemand ohne VBA-Kenntnisse eine Frage stellt und deshalb Antworten die dieses Niveau berücksichtigen (nicht: wie-kriege-ich, sondern: warum-will-ich-das) abbügelt.
Und PING, was erfragt wurde, an sich ist was anderes als die Benutzung dieser Funktionalität auf anderem Wege.
CN8
 
Es ist frech, wenn man eine konkrete Frage hinterfragt, nur weil man selbst die Frage nicht versteht oder die Antwort nicht kennt. Du hättest besser schweigen sollen.
 
Nur, wenn ein Server / eine Adresse nicht auf einen Ping reagiert dann bedeutet es aber nicht zwangsläufig, dass der Server Offline ist.

Je nach Anwendungszwecke Deiner Tabelle ist das Material dann eben durchaus fehlerhaft und nicht zu gebrauchen.
 
Dein Einwand ist richtig, aber: Das Ergebnis ist "Computer responded" oder "Computer did not respond" (siehe Skript). Die eigentliche Überwachung der Server erfolgt durch System Center, in der Tabelle geht es nur um "Pingbarkeit".
 
Zuletzt bearbeitet:
Frech…

…ist es Andere mit halben Infos in die Wüste zu schicken und ihnen extra eine überzubügeln weil sie überlegen oder das Normalste der Welt tun: nachfragen - weil sie zu oft bei solchen Fragen dank fehlender Infos völlig umsonst ihre Freizeit verblasen hatten.

Weißte, so ein Makro, aber «keine VBA-Kenntnisse» - das muss man für Veräppelung bis Lüge halten. Und dafür Backpfeifen verteilen, wenn man so was eh schon kann? Komm runter von deinem Hohen Ross und entschuldige dich mal, dass Andere über dein Problem überhaupt nachzudenken gewillt waren. Und bedenke, dass Dritte ebenfalls deine Art und Weise kritisierten.

Persönlicher Kommentar - du solltest gefälligst Antworten vollständig lesen bevor du losballerst: ich habe über die Übernahme der Rückgabe von «PING» geredet - und immerhin eine Idee dazu geäußert wie man «PING» einsetzen kann die gewünschte Antwort zu erhalten da du nach exakt «PING» gefragt hattest, nicht nach ›einen Ping‹, ›eine Ping-Anfrage‹.

CN8
 
  • Gefällt mir
Reaktionen: scheremypaskal
Zurück
Oben