Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Frage Entwicklung VB for Applications

GELÖST

Excel VBA - Clients anpingen und Ausgabe in Datei über Variable

Mitglied: AlecThunder

AlecThunder (Level 1) - Jetzt verbinden

12.05.2010 um 20:11 Uhr, 6119 Aufrufe, 10 Kommentare

Hallo,

ich befasse mich seit kurzem mit VB und stehe vor einer Herausforderung .

Ich versuche über excel-VB mehrere Clients anzupingen um den Online-Status in einer Spalte über mehrere Zeilen anzeigen zu lassen.
Das funktioniert soweit ganz gut. Nun habe ich aber mehrere Rechner und muss derzeit für jeden Rechner die Prozedur incl. Rechnernamen eintragen.

So sieht das bisher aus:

Hier der Code:

Sub PingClients()


Dim objExcel, objWorkbook, objWorksheet, astrComputer

'Computer eintragen

astrComputer = Array("Client1")


'Excel instanzieren

Set objWorksheet = Application.ActiveSheet



For i = 0 To UBound(astrComputer)

Set objPing = GetObject("winmgmts:").Get("Win32_PingStatus.Address='" & _
astrComputer(i) & "'")

If objPing.StatusCode = 0 Then


objWorksheet.Cells(i + 5, 3).Interior.ColorIndex = 4



Else



objWorksheet.Cells(i + 5, 3).Interior.ColorIndex = 3

End If

Next



'Computer eintragen

astrComputer = Array("Client2")



'Excel instanzieren

Set objWorksheet = Application.ActiveSheet



For i = 0 To UBound(astrComputer)

Set objPing = GetObject("winmgmts:").Get("Win32_PingStatus.Address='" & _
astrComputer(i) & "'")

If objPing.StatusCode = 0 Then


objWorksheet.Cells(i + 6, 3).Interior.ColorIndex = 4



Else



objWorksheet.Cells(i + 6, 3).Interior.ColorIndex = 3

End If

Next

End Sub

ab131b7c4df688f23020ddc4380ab861 - Klicke auf das Bild, um es zu vergrößern

Bei vielen Rechnern ist das natürlich sehr aufwendig. Geht das auch über eine Variable?
Habt Ihr evtl. einen Lösungsvorschlag für mich?

Danke!
Mitglied: bastla
12.05.2010 um 20:27 Uhr
Hallo AlecThunder und willkommen im Forum!

Die gewünschte Funktionalität ist eigentlich schon "eingebaut" - einfach die Liste der Computer in der Zeile
astrComputer = Array("Client1")
eintragen, also etwa
astrComputer = Array("Client1", "Client2", "Client3", "etc")
Alternativ dazu könnte auch die Liste in der Excel-Tabelle erstellt und von dort ausgelesen werden (ungetestet):
01.
Sub PingClients() 
02.
 
03.
Dim objWorksheet, Zeile, Spalte 
04.
 
05.
'Excel instanzieren 
06.
Set objWorksheet = Application.ActiveSheet 
07.
 
08.
Zeile = 5 
09.
Spalte = "C" 
10.
With objWorksheet 
11.
    Do While .Cells(Zeile, Spalte) <> "" 
12.
        Set objPing = GetObject("winmgmts:").Get("Win32_PingStatus.Address='" & _ 
13.
          .Cells(Zeile, Spalte) & "'") 
14.
        If objPing.StatusCode = 0 Then 
15.
            .Cells(Zeile, Spalte).Interior.ColorIndex = 4 
16.
        Else 
17.
            .Cells(Zeile, Spalte).Interior.ColorIndex = 3 
18.
        End If 
19.
        Zeile = Zeile + 1 
20.
    Loop 
21.
End With
Grüße
bastla
Bitte warten ..
Mitglied: padix72
12.05.2010 um 20:32 Uhr
Hätte jetzt als ersten Vorschlag, so aus dem Bauch heraus, ohne groß zu überlegen gesagt:

Schleife!

Statt jeden einzeln aus dem Array zu holen, einfach
for i = 1 to 254

ip_des_pc = "192.168.1." & i

ping(ip_des_pc)

next

Nur so als Lösungsvorschlag...
Bitte warten ..
Mitglied: AlecThunder
12.05.2010 um 21:15 Uhr
Zitat von bastla:
Hallo AlecThunder und willkommen im Forum!

Die gewünschte Funktionalität ist eigentlich schon "eingebaut" - einfach die Liste der Computer in der Zeile
astrComputer = Array("Client1") 
> 
eintragen, also etwa
astrComputer = Array("Client1", "Client2", "Client3", 
> "etc") 
> 

Hi Basti,

danke für den Anstoss. Daran habe ich auch schon gedacht, aber wie sähe der Eintrag für die Ausgabe aus?
Bitte warten ..
Mitglied: bastla
12.05.2010 um 21:27 Uhr
Hallo AlecThunder!
wie sähe der Eintrag für die Ausgabe aus?
Einfach nach der Zeile
For i = 0 To UBound(astrComputer)
die folgende Zeile einfügen:
objWorksheet.Cells(i + 5, 3).Value = astrComputer(i)
Grüße
bastla

P.S.: Die Bezugnahme auf geposteten Code ist leichter möglich, wenn dieser zwischen "<code>"- und "</code>"-Tags steht ...
Bitte warten ..
Mitglied: AlecThunder
12.05.2010 um 21:35 Uhr
Hallo Padix72,

die Clients besitzen dynamische IP´s.
Leider hilft mir das nicht weiter.

Danke für den Tipp!
Bitte warten ..
Mitglied: dog
13.05.2010 um 03:28 Uhr
Und was spricht hier gegen eine echte Monitoring Lösung wie http://www.mikrotik.com/thedude.php oder dutzende andere...
Bitte warten ..
Mitglied: AlecThunder
13.05.2010 um 08:42 Uhr
Zitat von dog:
Und was spricht hier gegen eine echte Monitoring Lösung wie http://www.mikrotik.com/thedude.php oder dutzende andere...

..ist nicht die Antwort auf meine Frage, sondern eher Werbung...
Bitte warten ..
Mitglied: AlecThunder
13.05.2010 um 12:00 Uhr
Hallo Bastia,

ich hab´s mal versucht umzusetzen.
Die Darstellung sieht gut aus, die Zeilen werden rot markiert. Allerdings auch die Online Clients. Der 1. wird noch grün dargestellt.

Des Weiteren wartet nach dem 8. Client Excel auf die Beendigung einer OLE-Aktion in einer anderen Anwendung.

Hier der aktuelle Code:
01.
Sub PingClient() 
02.
 
03.
Dim objWorksheet, Zeile, Spalte, astrComputer 
04.
 
05.
'Computer eintragen 
06.
 
07.
astrComputer = Array("Client1", "Client2", "Client3", "Client4", "Client5", "Client6", "Client7", "Client8", "Client9", "Client10") 
08.
 
09.
  
10.
'Excel instanzieren 
11.
 
12.
Set objWorksheet = Application.ActiveSheet 
13.
 
14.
Zeile = 5 
15.
Spalte = "C" 
16.
With objWorksheet 
17.
Do While .Cells(Zeile, Spalte) <> "" 
18.
Set objPing = GetObject("winmgmts:").Get("Win32_PingStatus.Address='" & _ 
19.
.Cells(Zeile, Spalte) & "'") 
20.
If objPing.StatusCode = 0 Then 
21.
.Cells(Zeile, Spalte).Interior.ColorIndex = 4 
22.
Else 
23.
.Cells(Zeile, Spalte).Interior.ColorIndex = 3 
24.
End If 
25.
Zeile = Zeile + 1 
26.
Loop 
27.
End With 
28.
 
29.
 
30.
For i = 0 To UBound(astrComputer) 
31.
objWorksheet.Cells(i + 5, 3).Value = astrComputer(i) 
32.
 
33.
    Set objPing = GetObject("winmgmts:").Get("Win32_PingStatus.Address='" & astrComputer(i) & "'") 
34.
 
35.
    If objPing.StatusCode = 0 Then 
36.
 
37.
 
38.
        objWorksheet.Cells(i + 5, 3).Interior.ColorIndex = 4 
39.
 
40.
    
41.
    Else 
42.
 
43.
    
44.
        objWorksheet.Cells(i + 5, 3).Interior.ColorIndex = 3 
45.
 
46.
    End If 
47.
 
48.
Next 
49.
 
50.
End Sub

Hast Du eine Idee, wo mein Fehler liegt?

Grüsse

AlecThunder
Bitte warten ..
Mitglied: bastla
13.05.2010 um 12:17 Uhr
Hallo AlecThunder!
Hast Du eine Idee, wo mein Fehler liegt?
Nicht wirklich (die offensichtlich von Dir bevorzugte Version mit Angabe der Computer in Zeile 7 habe ich eben erfolgreich mit 10 Geräten getestet [Edit] auch die Vorgangsweise mit dem Auslesen aus der Tabelle funktioniert bei mir [/Edit]) - allerdings vermischst Du beide Varianten ...

Um die Computer aus Zeile 7 anzupingen, sind die Zeilen 14 - 27unnötig, und um umgekehrt die in der Excel-Tabelle ab C5 eingetragenen Rechner anzusprechen, bräuchtest Du alles nach Zeile 27 nicht ...

Grüße
bastla

P.S.: Auch als davon nicht unmittelbar Betroffener habe ich mich gefragt, weshalb Du dogs Hinweis auf eine kostenlose Software als "Werbung" abtust ...
Bitte warten ..
Mitglied: AlecThunder
13.05.2010 um 13:24 Uhr
P.S.: Auch als davon nicht unmittelbar Betroffener habe ich mich gefragt, weshalb Du
dogs Hinweis auf eine kostenlose
Software als "Werbung" abtust ...

Löste nicht wirklich mein Problem. Versuche mein Vorhaben über Excel VBA zu lösen.


Hab´s nun Dank Deiner Hilfe aber hinbekommen! Lag in der Tat an dem unnötigen Procedre ab Zeile 14.- 27 (Hab´s mir schon fast gedacht...)

Vielen Dank für Deine Unterstützung!

Grüsse

AlecThunder
Bitte warten ..
Ähnliche Inhalte
VB for Applications
VBA - Excel: Beschreibung einzelner Variablen
gelöst Frage von PridoxVB for Applications2 Kommentare

Guten Tag werte Community. Ich habe eine Frage bezüglich der Beschreibung für den Nutzer in Excel. Verwendet man beispielsweise ...

Microsoft
Excel-Datei mit VBA speichern
gelöst Frage von 116408Microsoft6 Kommentare

Guten Tag Ich habe eine Excel-Datei, in der in D4 der Kundenname und in D11 das Projekt benennt wird. ...

VB for Applications
VBA Excel Dateien zusammenfassen
Frage von cberndtVB for Applications3 Kommentare

Hi Leute. Ich bin dabei einen Ordner mit Excellisten zusammenzufassen. Im Ordner sind gut 600 einzelne Excel Dateien die ...

VB for Applications
Excel VBA: Listbox Ausgabe über Comboboxen filtern
gelöst Frage von JuweeeVB for Applications2 Kommentare

Hallo, hat jemand zufällig ein Beispiel oder einen Link in peto, der zeigt wie die Ausgabe in einer Listbox ...

Neue Wissensbeiträge
Linux

Meltdown und Spectre: Linux Update

Information von Frank vor 10 StundenLinux1 Kommentar

Meltdown (Variante 3 des Prozessorfehlers) Der Kernel 4.14.13 mit den Page-Table-Isolation-Code (PTI) ist nun für Fedora freigegeben worden. Er ...

Tipps & Tricks

Solutio Charly Updater Fehlermeldung: Das Abgleichen der Dateien in -Pfad- mit dem Datenobject ist fehlgeschlagen

Tipp von StefanKittel vor 1 TagTipps & Tricks

Hallo, hier einmal als Tipp für alle unter Euch die mit der Zahnarztabrechnungssoftware Charly von Solutio zu tun haben. ...

Sicherheit

Meltdown und Spectre: Wir brauchen eine "Abwrackprämie", die die CPU-Hersteller bezahlen

Information von Frank vor 1 TagSicherheit12 Kommentare

Zum aktuellen Thema Meltdown und Spectre: Ich wünsche mir von den CPU-Herstellern wie Intel, AMD oder ARM eine Art ...

Sicherheit

Meltdown und Spectre: Realitätscheck

Information von Frank vor 1 TagSicherheit9 Kommentare

Die unangenehme Realität Der Prozessorfehler mit seinen Varianten Meltdown und Spectre ist seit Juni 2017 bekannt. Trotzdem sind immer ...

Heiß diskutierte Inhalte
Sicherheit
Meltdown und Spectre: Die machen uns alle was vor
Information von FrankSicherheit24 Kommentare

Aktuell sieht es in den Medien so aus, als hätten die Hersteller wie Intel, Microsoft und Co den aktuellen ...

Ubuntu
Ubuntu - Starter für nicht vertrauenswürdige Anwendungen
Frage von adm2015Ubuntu17 Kommentare

Hallo zusammen, Ich verwende derzeit die Ubuntu Versionen 17.10 bzw. im Test 18.04. Ich habe mehrere .desktop Dateien in ...

Netzwerke
Packet loss bei "InternetLeitungsvollauslastung"
gelöst Frage von Freak-On-SiliconNetzwerke17 Kommentare

Servus; Ja der Titel klingt komisch, is aber so. Wenn die Internetleitung voll ausgelastet ist, hab ich extreme packet ...

Windows 10
Automatische daten kopieren, USB zu USB unter Win10 im Hintergrund
Frage von DerEisigeWindows 1016 Kommentare

Hallo Leute, ich bin auf der Suche nach einem Skript, dass von einem USB Stick automatisch nach dem einstecken ...