Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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

Frage Entwicklung VB for Applications

Mitglied: AlecThunder

AlecThunder (Level 1) - Jetzt verbinden

12.05.2010 um 20:11 Uhr, 6058 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 ..
Neuester Wissensbeitrag
Internet

Unbemerkt - Telekom Netzumschaltung! - BNG - Broadband Network Gateway

(3)

Erfahrungsbericht von ashnod zum Thema Internet ...

Ähnliche Inhalte
VB for Applications
gelöst Excel VBA Eine oder mehrere Zellen Verschieben (2)

Frage von batchnewbie zum Thema VB for Applications ...

Microsoft Office
Excel VBA: Tranferieren von Werten aus Quelldatei in die Masterdatei mit SVERWEIS (3)

Frage von peter.schroeder zum Thema Microsoft Office ...

Heiß diskutierte Inhalte
Switche und Hubs
Trunk für 2xCisco Switch. Wo liegt der Fehler? (17)

Frage von JayyyH zum Thema Switche und Hubs ...

Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...

DSL, VDSL
DSL-Signal bewerten (14)

Frage von SarekHL zum Thema DSL, VDSL ...