您可以使用此:
Public Sub OhSht()
Dim o As Object
For Each o In GetObject("winmgmts:\\.\root\cimv2").ExecQuery("Select * from Win32_Printer")
o.CancelAllJobs
Next
End Sub
爲了幫助調試,您可以使用此版本:
Public Sub OhSht()
Dim o As Object, ret
For Each o In GetObject("winmgmts:\\.\root\cimv2").ExecQuery("Select * from Win32_Printer")
ret = o.CancelAllJobs
Debug.Print o.Name, ret
Next
End Sub
它會列出每個打印機和打印機上的CancelAllJobs方法的結果。
返回值0
表示成功取消該打印機上的所有作業。
返回值5
表示拒絕訪問該特定打印機。
據我所知,沒有其他可能的返回值。請參閱this。
UPDATE
這可能有助於提高您的訪問;嘗試此版本:
Public Sub OhSht()
Dim o As Object, ret
For Each o In GetObject("winmgmts:{impersonationLevel=impersonate}//./root/cimv2").ExecQuery("Select * from Win32_Printer")
ret = o.CancelAllJobs
Debug.Print o.Name, ret
Next
End Sub
您可以從Excel觸發打印作業的機器上取消打印作業。 – ManishChristian
沒錯,但是我想在我的加載項中編寫一個熱鍵作爲「哦s#!%」按鈕 –