質問
2021年4月18日日曜日 5:58
Windows10 Excel VBAでCPU使用率と起動しているプロセス名を取得するコードを教えてください。
いろいろWebサイトを検索してみましたが、
VBのコードはありましたがVBAが見つけることができませんでした。
CPU使用率
・https://teratail.com/questions/3613
このコードを実行しても何も表示されません。(空白が表示されます)
・https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q14136050049
リンク先のコードはVBAではなくVBのようで、VBAではエラーになります。
プロセス名
・http://officetanaka.net/excel/vba/tips/tips61.htm
プロセス名の取得ではなくタスク名の取得でした
・http://hanatyan.sakura.ne.jp/dotnet/App05.htm
VBのコードのようで、VBAではProcess.GetProcessesでエラーになります。
よろしくお願いします。
すべての返信 (2)
2021年4月18日日曜日 8:06
こんな?
Sub Test()
'Microsoft WMI Scripting参照
Dim wbem As WbemScripting.SWbemLocator
Dim wbemSvs As WbemScripting.SWbemServices
Dim wbemObjSet As WbemScripting.SWbemObjectSet
Dim wbemObj As WbemScripting.SWbemObject
Dim wbemProp As WbemScripting.SWbemProperty
Dim sh As Worksheet
Dim rng As Range
Set sh = ThisWorkbook.Worksheets.Add
Set rng = sh.Cells(1, 1)
Set wbem = New WbemScripting.SWbemLocator
Set wbemSvs = wbem.ConnectServer()
rng.Value = "CPU使用率"
rng.Font.Bold = True
Set rng = rng.Offset(1, 0)
Set wbemObjSet = wbemSvs.ExecQuery("SELECT * FROM Win32_Processor")
For Each wbemObj In wbemObjSet
rng.Cells(1, 1) = wbemObj.Properties_("DeviceID").Value
rng.Cells(1, 2) = wbemObj.Properties_("LoadPercentage").Value
Set rng = rng.Offset(1, 0)
Next
Set rng = rng.Offset(2, 0)
rng.Value = "プロセス名"
rng.Font.Bold = True
Set rng = rng.Offset(1, 0)
Set wbemObjSet = wbemSvs.ExecQuery("SELECT * FROM Win32_Process")
For Each wbemObj In wbemObjSet
rng.Cells(1, 1) = wbemObj.Properties_("Name").Value
Set rng = rng.Offset(1, 0)
' For Each wbemProp In wbemObj.Properties_
' Debug.Print wbemProp.name & vbTab & wbemProp.Value
' Next
Next
End Sub
個別に明示されていない限りgekkaがフォーラムに投稿したコードにはフォーラム使用条件に基づき「MICROSOFT LIMITED PUBLIC LICENSE」が適用されます。(かなり自由に使ってOK!)
2021年4月18日日曜日 10:27
教えて頂きましたコードで、
CPU使用率とプロセス名を取得することができました。
ありがとうございました。