• 締切済み

エクセルVBA Sell関数で起動したアプリの終了

エクセルで出退勤時間管理のマクロを作っています。 sheet1にデスクトップ用の時計をShell関数を使って貼り付けましたが、他のシートを選択した時も時計が表示されてしまいます。他のシートを選択した時は、時計のプログラムを終了させたいのですが、マクロのコードをどの様に記述したらよいかわかりません。 どなたか、詳しい方、ご教授お願いします。

みんなの回答

  • nda23
  • ベストアンサー率54% (777/1415)
回答No.1

WindowsAPIで行う方法と、WMIを使う方法があります。 #1 WindowsAPIを使う方法 Declare Function OpenProcess Lib "kernel32" _   (ByVal dwDesiredAccess As Long, _   ByVal bInheritHandle As Long, _   ByVal dwProcessId As Long) As Long Declare Function TerminateProcess Lib "kernel32" _   (ByVal hProcess As Long, _   ByVal uExitCode As Long) As Long Declare Function CloseHandle Lib "kernel32" _   (ByVal hObject As Long) As Long Sub プロセス終了(ByVal プロセスID As Long) Dim プロセスハンドル As Long プロセスハンドル = OpenProcess(1, 0, プロセスID) TerminateProcess プロセスハンドル, 0 CloseHandle プロセスハンドル End Sub #2 WMIを使う方法 Sub プロセス終了(ByVal プロセスID As Long) Dim Services, ObjectSet, ObjectEx Set Services = GetObject("winmgmts:\\.\root\cimv2") Set ObjectSet = Services.ExecQuery("Select * From Win32_Process WHERE ProcessID=" & CStr(プロセスID)) For Each ObjectEx In ObjectSet   ObjectSet.Terminate 0 Next End Sub Shell関数を使わず、WSHのExecメソッドを使うことも検討してください。

参考URL:
http://msdn.microsoft.com/ja-jp/library/cc364356.aspx
oldhammer
質問者

お礼

早速の回答、ありがとうございました。

関連するQ&A