Anzeige
Archiv - Navigation
1272to1276
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

Systembefehle aus Excel VBA heraus aufrufen

Systembefehle aus Excel VBA heraus aufrufen
Stefan
Hallo zusammen,
nach einigen Jahren Excel-VBA Abstinenz möchte ich mich wieder ein wenig intensiver mit Excel und VBA auseinandersetzen, insbesondere auch deshalb da unser Managment gerne Office-Lösungen anstelle von lediglich Kommandozeilen basierten Ausgaben bevorzugt.
Ich möchte in Excel eine Art Monitoring für unsere Client-PCs erstellen. Viele Aufgaben lassen sich hier direkt mit Excel und VBA-Makros umsetzen. Problematisch wird es aber immer wenn man auf Systembefehle, wie etwa auf einen ping oder auch Sysinternals-Programme wie

psinfo | find "time"
zugreifen muss. Mein Ansatz bisher war, dass ich ein Script gestartet habe, welches etwa eine in Excel "produzierte" Liste (ASCII-Textdatei) abarbeitet und dann eine Ergebnisliste erstellte mit eben den geprüften Informationen (z. B. ping ok, oder eben die Uptime). Diese habe ich dann in Excel wieder eingelesen und die Ergebnisse dann dargestellt. Allerdings musste ich auf der Excelseite immer eine Wartezeit einbauen, die natürlich aufgrund der variierenden Zeitdauer auf das Maximum der Zeit ausgelegt sein musste.
Hat jemand hier Erfahrungen bzw. andere Ansätze? Ach ja, es muss auf alle Fälle mit Clientrechten laufen!
Gruß und schon mal vielen Dank für Eure Beiträge
Stefan

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Systembefehle aus Excel VBA heraus aufrufen
14.08.2012 10:38:36
MatthiasG
Hallo Stefan,
ich habe dies in meinem "Privatarchiv" gefunden (hab ich selbst aus dem Netz):

Option Explicit
Private Declare Function CloseHandle Lib "kernel32" _
(ByVal hObject As Long) As Long
Private Declare Function GetExitCodeProcess Lib "kernel32" _
(ByVal hProcess As Long, ExitCode As Long) As Long
Private Declare Function OpenProcess Lib "kernel32" _
(ByVal DesiredAccess As Long, ByVal InheritHandle As Long, _
ByVal ProcessId As Long) As Long
Public Function ShellWait(Exec As String, _
Optional WindowStyle As VbAppWinStyle = vbMinimizedFocus) _
As Long
Dim nTaskId As Long
Dim nHProcess As Long
Dim nExitCode As Long
Const STILL_ACTIVE = &H103
Const PROCESS_QUERY_INFORMATION = &H400
nTaskId = Shell(Exec, WindowStyle)
nHProcess = OpenProcess(PROCESS_QUERY_INFORMATION, False, nTaskId)
Do
DoEvents
GetExitCodeProcess nHProcess, nExitCode
Loop While nExitCode = STILL_ACTIVE
CloseHandle nHProcess
ShellWait = nExitCode
End Function
Sub test()
MsgBox ShellWait("ping herber.de", vbNormalFocus)
End Sub

Gruß Matthias
Anzeige
AW: Systembefehle aus Excel VBA heraus aufrufen
14.08.2012 11:48:57
Stefan
Hi Matthias,
wirklich super! Habe eben mal die Anzahl der pings auf 1 reduziert und da ist das wirklich super schnell!
Gruß und Danke
Stefan

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige