2014-10-10 222 views
2

我試圖通過VBA殺死某些進程。我有一個連接到市場數據總線的專有對象。通過RTD,我將此對象稱爲pub/sub到總線。但是有時連接會下降,我需要通過任務管理器來終止進程。有沒有辦法通過VBA殺死進程?如何通過VBA代碼殺死任務管理器進程?

感謝

+1

哪些進程?我沒有倒下,但往往這些無聲的downvoters會這樣做,因爲這是因爲你迄今沒有顯示你的努力(或解釋爲什麼你的谷歌結果是沒有用的)來解決這個問題。它會幫助你和具有特定問題的下一個人。請[Check this out](http://stackoverflow.com/help/how-to-ask) – 2014-10-10 16:08:31

回答

8

與此代碼

Dim oServ As Object 
Dim cProc As Variant 
Dim oProc As Object 

Set oServ = GetObject("winmgmts:") 
Set cProc = oServ.ExecQuery("Select * from Win32_Process") 

For Each oProc In cProc 

    'Rename EXCEL.EXE in the line below with the process that you need to Terminate. 
    'NOTE: It is 'case sensitive 

    If oProc.Name = "EXCEL.EXE" Then 
     MsgBox "KILL" ' used to display a message for testing pur 
     oProc.Terminate() 
    End If 
Next 
+1

更簡單一點,你可以使用:'Set cProc = oServ.ExecQuery(「Select * from Win32_Process Where Name =' EXCEL.EXE'「)'只獲取Excel進程。 – Andre 2017-05-16 14:32:24

+0

'errReturnCode變量未定義' – 2018-03-05 20:43:25

+1

@luigi洛佩茲現在看看,我編輯代碼 – 2018-03-06 10:06:57

4

看看更多的一個例子嘗試:

Sub Test() 
    If TaskKill("notepad.exe") = 0 Then MsgBox "Terminated" Else MsgBox "Failed" 
End Sub 

Function TaskKill(sTaskName) 
    TaskKill = CreateObject("WScript.Shell").Run("taskkill /f /im " & sTaskName, 0, True) 
End Function 
+0

作品像一個魅力! – Termi 2017-01-24 14:27:54