以下代码用于测量CPU%使用。
Public Sub Macro1()
Dim strComputer As String
Dim objWMIService As Object
Dim colItems As Object
Dim objItem As Object
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_PerfFormattedData_PerfOS_Processor", , 48)
For Each objItem In colItems
Debug.Print objItem.PercentProcessorTime
Next
End Sub
我从此链接中获得了上述代码:https://analystcave.com/excel-measuring-cpu-usage-in-vba-and-vba-and-other-performance-metrics/#comment-184350
. 我希望代码等到CPU使用率下降到60%以下。 您可以尝试这样的事情:
(我可能也会在其中放一个睡眠(),以帮助将其旋转以快速减少)
Sub Test()
Debug.Print "Starting"
Call PauseWhileBusy
Debug.Print "Done"
End Sub
Sub PauseWhileBusy(Optional ByVal lMaxPercent As Long = 60, Optional ByVal strComputer As String = ".")
Dim colItems As Object
Dim objItem As Object
Dim bTooBusy As Boolean
With GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Do
Set colItems = .ExecQuery("Select * from Win32_Processor")
For Each objItem In colItems
Debug.Print "Current Load:", objItem.LoadPercentage
bTooBusy = objItem.LoadPercentage > lMaxPercent
Next
DoEvents
Loop While bTooBusy
End With
End Sub
环路来实现这一目标,该
环连续检查CPU的使用情况,并且仅在降至60%以下时才退出。为了防止在等待时过度使用CPU,您应该使用Sleep