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

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, 6135 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
Windows 7

Windows 7 - Server 2008 R2: Exploit für Total Meltdown verfügbar

Information von kgborn vor 6 StundenWindows 7

Kleine Information für Administratoren, die für die Updates von Windows 7 SP1 und Windows Server 2008 R2 SP1 verantwortlich ...

Sicherheit

Zero Day-Schwachstelle im Internet Explorer - wird von APT bereits ausgenutzt

Information von kgborn vor 16 StundenSicherheit

Im Kernel des Internet Explorer scheint es eine Zero Day-Lücke zu geben, die von staatlichen Akteuren (APT) im Rahmen ...

Microsoft
Folder Security Viewer-Lizenzen zu gewinnen
Information von kgborn vor 16 StundenMicrosoft

Ich nehme das Thema mal in Absprache mit Frank hier auf, da es für den einen oder anderen Administrator ...

Hardware

Feueralarm killt Festplatten in Rechenzentrum - führt zu größerem Ausfall

Information von kgborn vor 16 StundenHardware11 Kommentare

Noch ein kleiner Beitrag für Administratoren, die in Rechenzentren aktiv sind - so als Fingerzeig. Denn es gibt Szenarien, ...

Heiß diskutierte Inhalte
Linux
Linux Server oder Windows Server - lohnt eine Umstellung auf Linux und ebenso basierende SW bei einer langfristigen Planung?
Frage von motus5Linux23 Kommentare

Wir brauchen bei uns einen neuen Server. Dieser wird als Fileserver, Domäne Controller sowie Exchange Server verwendet. Wir versuchen ...

DSL, VDSL
ISP Wechsel auf Vodefone Koax, Gebäudeverkabelung nur per Cat 7
gelöst Frage von wusa88DSL, VDSL18 Kommentare

Hallo Zusammen, ich bin momentan bei Mnet als Glasfaser Kunde und möchte Preis/Leistungs-Technisch zu Kabel Deutschland / Vodafone wechseln. ...

LAN, WAN, Wireless
Kommunikation zwischen verschiedenen IP-Bereichen
Frage von DirkHoLAN, WAN, Wireless13 Kommentare

Hallo zusammen, von Unitymedia habe ich ein neues Modem (Connect Box) erhalten, das u.a. IPv4 aber keinen Bridge Mode ...

Windows Server
Domänencontroller trennen
Frage von Akit57Windows Server13 Kommentare

Hallo, ich hoffe das mir hier jemand meine Frage trotz der spärlichen Informationen die ich geben kann beantworten kann: ...