Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: CPU-Auslastung abfragen

CPU-Auslastung abfragen
14.08.2005 12:35:55
Norman
Hallo nochmal,
habe gerade mal ein bisserl recherchiert aber nix gescheites zur Anzeige der CPU-Auslastung gefunden. Ich will NICHT den Fortschritt eines Makros anzeigen sondern tatsächlich die CPU-Auslastung abfragen (à la Task-Manager), damit ich ggf. noch weitere Prozesse anwerfen kann (mittels SHELL) bzw. die Anzahl der Prozesse reduzieren kann (mittels KILL).
Weiß jemand, wie ich die CPU-Auslastung abfragen kann?
Gruß und Danke
Norman
Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: CPU-Auslastung abfragen
14.08.2005 14:35:58
K.Rola
Hallo,
Hierzu muss RSRC32.DLL vorhanden sein:
Option Explicit
Private Declare Function GetFreeSystemResources32 _
Lib "rsrc32.dll" Alias "_MyGetFreeSystemResources32@4" _
(ByVal aloRK As Integer) As Integer
Const RT_SYSTEM = 0
Const RT_GDI = 1
Const RT_USER = 2
Function GetFreeResources(R_Type As Integer) As Integer
On Error GoTo ENDE
GetFreeResources = GetFreeSystemResources32(R_Type)
Exit Function
ENDE:
GetFreeResources = -1
End Function

Private Sub cmdOK_Click()
MsgBox "System: " & GetFreeResources(RT_SYSTEM) & Chr(10) & _
"GDI: " & GetFreeResources(RT_GDI) & Chr(10) & _
"User: " & GetFreeResources(RT_USER)
End Sub

Gruß K.Rola
Anzeige
OT: Ui, super, vielen Dank Ihr beiden!
14.08.2005 15:55:08
Norman
Gruß
Norman
AW: CPU-Auslastung XP
15.08.2005 08:32:58
Rolf
Hi K.Rola,
hast du auch eine XP-Lösung im Angebot?
Herzliche Grüße
Rolf
AW: CPU-Auslastung XP
15.08.2005 17:06:59
K.Rola
Hallo,
Option Explicit
Private Declare Sub Sleep Lib "Kernel32" (ByVal ms As Long)
Sub CPU_Auslastung()
Dim objWMI As Object, objRefresh As Object, colCPU As Object
Dim i As Long, objCPU As Object
Set objWMI = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & "." & "\root\cimv2")
Set objRefresh = CreateObject("WbemScripting.Swbemrefresher")
Set colCPU = objRefresh.AddEnum _
(objWMI, "Win32_PerfFormattedData_PerfOS_Processor").objectSet
i = 0
objRefresh.Refresh
Do
For Each objCPU In colCPU
If objCPU.PercentProcessorTime > 0 Then
UserForm1.Label1 = objCPU.PercentProcessorTime & "%"
DoEvents
Else
UserForm1.Label1 = "0%"
DoEvents
End If
Next
Sleep 5000 'nach 5 Sekunden aktualisieren
objRefresh.Refresh
Loop
End Sub
Nur für Windows XP geeignet!
Anzeige in userform oder Symbolleiste, Zelle nicht zu empfehlen.
Gruß K.Rola

Anzeige
AW: CPU-Auslastung XP
15.08.2005 21:49:46
Rolf
Hi K.Rola,
wieder mal eine Demonstration, dass Programmieren
auch künstlerische Aspekte haben kann.
Danke dir
Rolf
PS
Anzeige via "Userform1.Show vbModeless"
;
Anzeige
Anzeige

Infobox / Tutorial

CPU-Auslastung abfragen in Excel


Schritt-für-Schritt-Anleitung

Um die CPU-Auslastung in Excel abzufragen und anzuzeigen, benötigst du einige VBA-Codes. Folge diesen Schritten:

  1. VBA-Editor öffnen

    • Öffne Excel und drücke ALT + F11, um den VBA-Editor zu starten.
  2. Neues Modul erstellen

    • Klicke mit der rechten Maustaste auf "VBAProject (DeinWorkbookName)" > Einfügen > Modul.
  3. Code einfügen

    • Kopiere den folgenden Code und füge ihn in das Modul ein:
    Option Explicit
    Private Declare Sub Sleep Lib "Kernel32" (ByVal ms As Long)
    
    Sub CPU_Auslastung()
       Dim objWMI As Object, objRefresh As Object, colCPU As Object
       Dim i As Long, objCPU As Object
       Set objWMI = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & "." & "\root\cimv2")
       Set objRefresh = CreateObject("WbemScripting.Swbemrefresher")
       Set colCPU = objRefresh.AddEnum(objWMI, "Win32_PerfFormattedData_PerfOS_Processor").objectSet
       i = 0
       objRefresh.Refresh
       Do
           For Each objCPU In colCPU
               If objCPU.PercentProcessorTime > 0 Then
                   UserForm1.Label1 = objCPU.PercentProcessorTime & "%"
                   DoEvents
               Else
                   UserForm1.Label1 = "0%"
                   DoEvents
               End If
           Next
           Sleep 5000 'nach 5 Sekunden aktualisieren
           objRefresh.Refresh
       Loop
    End Sub
  4. UserForm erstellen

    • Füge einen UserForm hinzu und platziere ein Label drauf, um die CPU-Auslastung anzuzeigen.
  5. UserForm anzeigen

    • Verwende den Befehl UserForm1.Show vbModeless, um das UserForm nicht modal zu zeigen.
  6. Makro ausführen

    • Schließe den VBA-Editor und führe das Makro aus, um die CPU-Auslastung anzuzeigen.

Häufige Fehler und Lösungen

  • Fehler: "DLL nicht gefunden"
    Stelle sicher, dass die rsrc32.dll-Datei im System vorhanden ist. Ohne diese kann der Code nicht ausgeführt werden.

  • Fehler: "Objekt nicht gefunden"
    Überprüfe, ob die Windows Management Instrumentation (WMI) korrekt installiert ist. Möglicherweise sind Administratorrechte erforderlich.


Alternative Methoden

Eine andere Möglichkeit zur Anzeige der CPU-Auslastung wäre die Verwendung von Excel-Funktionen in Kombination mit externen Tools:

  • PowerShell-Skript: Du kannst ein PowerShell-Skript schreiben, das die CPU-Auslastung abfragt und die Ergebnisse in Excel importiert.
  • Excel-Datenabfrage: Verwende die Funktionen zur Datenabfrage in Excel, um Systeminformationen von externen Quellen zu importieren.

Praktische Beispiele

Hier ist ein einfaches Beispiel, wie du die CPU-Auslastung in einer UserForm anzeigen kannst:

Private Sub UserForm_Initialize()
    Call CPU_Auslastung
End Sub

Füge dies in den Code deines UserForms ein, um die CPU-Auslastung sofort beim Öffnen des Forms anzuzeigen. Stelle sicher, dass das Label für die Anzeige der CPU-Auslastung korrekt benannt ist.


Tipps für Profis

  • Automatisierung: Du kannst die CPU-Auslastung regelmäßig abfragen und in eine Excel-Tabelle protokollieren. Dies ist nützlich, um Trends in der Systemauslastung zu analysieren.
  • Grafische Darstellung: Verwende Diagramme in Excel, um die CPU-Auslastung über die Zeit zu visualisieren. Dies macht es einfacher, Muster zu erkennen.
  • Optimierung: Wenn du viele Prozesse gleichzeitig laufen hast, kann es sinnvoll sein, die CPU-Auslastung zu überwachen, um die Leistung des Systems zu optimieren.

FAQ: Häufige Fragen

1. Wie kann ich die CPU-Auslastung auf mehreren Kernen anzeigen?
Der obige Code zeigt die durchschnittliche CPU-Auslastung an. Du kannst den Code anpassen, um die Auslastung jedes einzelnen Kerns anzuzeigen, indem du die Win32_PerfFormattedData_PerfOS_Processor-Klasse entsprechend abfragst.

2. Ist dieser Code mit Excel 365 kompatibel?
Ja, der Code sollte in Excel 365 problemlos funktionieren, solange die erforderlichen Bibliotheken und Berechtigungen vorhanden sind.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige