Закрытие Ms объектов, инстансы КОМ и пр.

hosm

* so what *
18.05.2009
2 442
9
#1
Рецепт lmike.
При работе через COM бывает необходимо закрывать приложения МСО...
что бы не заставлять это делать пользователей ;), можно звать (для ворда, например):
Код:
Sub CloseMSWord()
On Error Goto ErrH
Dim objs As Variant
Dim strSQL As String
Dim strWMI As String
strWMI = "winmgmts:"
strSQL = "Select * From Win32_Process "
strSQL = strSQL & "where Name = 'WINWORD.EXE'"
Set objs = GetObject(strWMI).ExecQuery(strSQL)
Forall obj In objs
obj.Terminate
End Forall
Quit:
Exit Sub
ErrH:
Error Err, Error$ & " in " & GetThreadinfo(1) & " line " & Cstr(Erl)
End Sub
открытые файлы молча не сохранятся ;)
грубо, но эффективно ;)
Полезно при "зависших" процессах Excel или Word. (Когда у них .Visible=False)
 

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 484
360
#2
маленькая поправка (в моём варианте она не нужна была) - убрать resume
поднятие ошибки подразумевает обработку выше (в вызывающем коде)