Sub Sample1()
Dim WD, task, n As Long
Set WD = CreateObject("Word.Application") ''Wordを起動します
For Each task In WD.Tasks ''Word VBAのTasksコレクションを調べます
If task.Visible = True Then ''タスク(プロセス)が実行中だったら
n = n + 1
Cells(n, 1) = task.Name ''タスクの名前を書き出します
End If
Next
WD.Quit
Set WD = Nothing
End Sub
Sub Sample2()
Dim WD
Set WD = CreateObject("Word.Application")
If WD.Tasks.Exists("Internet Explorer") Then
MsgBox "Internet Explorerが起動しています", vbInformation
End If
WD.Quit
Set WD = Nothing
End Sub
TasksコレクションのExistsメソッドは、指定したタスクが存在するかどうかを返します。引数にはタスクの名前(Nameプロパティ)を指定します。Sub Sample1の結果を見てもらうとわかるように、現在起動しているIEのタスク名は「気象庁 | 週間天気予報 - Microsoft Internet Explorer」ですが、Existsメソッドでは「引数に指定した文字列を含む」タスクが存在した場合にTrueが返ります。ですから、他のタスクに似た名前がないのなら「If WD.Tasks.Exists("Explorer") Then」などでも判定は可能です。
Sub Sample2()
Dim WD
Set WD = CreateObject("Word.Application")
If WD.Tasks.Exists("Internet Explorer") Then
WD.Tasks("Internet Explorer").Close
End If
WD.Quit
Set WD = Nothing
End Sub
Sub Sample3()
Dim WD, task
Set WD = CreateObject("Word.Application")
For Each task In WD.Tasks
If task.Visible = True And InStr(task.Name, "Internet Explorer") > 0 Then
If MsgBox(task.Name & vbCrLf & "を終了させますか?", 36) = vbYes Then
task.Close
End If
End If
Next
WD.Quit
Set WD = Nothing
End Sub