|
Убить Word из Excel? Закрыть все открытые приложения Word макросом из Excel.
|
|||
---|---|---|---|
#18+
Сделал макрос , который берет значения из переменых в Excel и создает на их основе файл Word. Все работает отлично, но если есть хоть одно открытое вордовское приложение, макрос останавливается и предлагает пересохранить файл шаблона... Причем справка майкрософта признает что это реальный глюк офиса... Долго думал как это обойти и родилась идея, но не хватает знаний: Каким образом можно сделать следующее? 1. Посчитать обшее число всех открытых приложений Word 2. Закрыть все приложения принудительно через VBA из Excel ... |
|||
:
Нравится:
Не нравится:
|
|||
04.03.2010, 17:23 |
|
Убить Word из Excel? Закрыть все открытые приложения Word макросом из Excel.
|
|||
---|---|---|---|
#18+
А зачем их считать? Просто находи все открытые приложения и закрывай их. Не нашел - вышел из цикла. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
... |
|||
:
Нравится:
Не нравится:
|
|||
04.03.2010, 18:25 |
|
Убить Word из Excel? Закрыть все открытые приложения Word макросом из Excel.
|
|||
---|---|---|---|
#18+
Теперь я счастлив... А вот еще вопросик, а если таким образом пытаться закрыть все "лишние" приложения Excel из самого Excel? Получится глюк... Как же поступить в данном случае? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.03.2010, 21:25 |
|
Убить Word из Excel? Закрыть все открытые приложения Word макросом из Excel.
|
|||
---|---|---|---|
#18+
Ну почему же глюк? Оно будет перебирать все открытые Эксели до тех пор пока не наткнется на самого себя, закроет само себя и все. Даже об ошибке не сообщит потому что ошибки по существу не случится. В принципе, "самого себя" можно отловить например так: Код: plaintext 1. 2. 3.
Можно из макроса-убийцы сделать внешний vbs и запустить его. В VBS аналогичным кодом убить все Эксели, потом открыть нужный и запустить в нем нужный макрос-единоличник. Можно принудительно открыть новый Эксель и запустить в нем макрос-убийцу, тогда можно быть уверенным что после открытия нового Экселя и отработки макроса не запускалось больше никаких копий Экселя... ну почти уверенным. А еще можно забыть про ActiveX и взять WinAPI, смотри функцию EnumerateWindows(). Но это уже далеко не VBA. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.03.2010, 21:58 |
|
Убить Word из Excel? Закрыть все открытые приложения Word макросом из Excel.
|
|||
---|---|---|---|
#18+
Здравствуйте!!! У меня ворд открывается сразу в виде режима промотра, а закрывается сначала вид режима просмотра, а потом вид режима разметки, как сделать что бы ворд закрывался сразу из вида просмотра??? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.08.2010, 15:14 |
|
Убить Word из Excel? Закрыть все открытые приложения Word макросом из Excel.
|
|||
---|---|---|---|
#18+
А не подскажете как закрыть приложение зная его Hwnd (вообще известны все данные из Application)? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.08.2010, 18:00 |
|
Убить Word из Excel? Закрыть все открытые приложения Word макросом из Excel.
|
|||
---|---|---|---|
#18+
White OwlНу почему же глюк? Оно будет перебирать все открытые Эксели до тех пор пока не наткнется на самого себя, закроет само себя и все. Даже об ошибке не сообщит потому что ошибки по существу не случится. В принципе, "самого себя" можно отловить например так: Код: vbnet 1. 2. 3. 4.
Но в показаный цикл это совать нет смысла, потому что сначала цикл как и предполагается убьет все ранее запущенные Эксели, но как только цикл дойдет до самого себя - все последующие вызовы GetObject() будут возвращать первый в памяти , то есть самого себя. Все Эксели который были загружены после того который выполняет этот макрос доступны уже не будут. Можно из макроса-убийцы сделать внешний vbs и запустить его. В VBS аналогичным кодом убить все Эксели, потом открыть нужный и запустить в нем нужный макрос-единоличник. Можно принудительно открыть новый Эксель и запустить в нем макрос-убийцу, тогда можно быть уверенным что после открытия нового Экселя и отработки макроса не запускалось больше никаких копий Экселя... ну почти уверенным. А еще можно забыть про ActiveX и взять WinAPI, смотри функцию EnumerateWindows(). Но это уже далеко не VBA. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.11.2017, 09:45 |
|
Убить Word из Excel? Закрыть все открытые приложения Word макросом из Excel.
|
|||
---|---|---|---|
#18+
White OwlНу почему же глюк? Оно будет перебирать все открытые Эксели до тех пор пока не наткнется на самого себя, закроет само себя и все. Даже об ошибке не сообщит потому что ошибки по существу не случится. Тем не менее глюк случился. Ничего не происходит, макрос просто виснет Запускал этот макрос, основанный на вашем примере: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18.
Благодарен Вам заранее, мне бы очень помогла процедура закртия всех приложений Excel ... |
|||
:
Нравится:
Не нравится:
|
|||
10.11.2017, 11:06 |
|
Убить Word из Excel? Закрыть все открытые приложения Word макросом из Excel.
|
|||
---|---|---|---|
#18+
Jagareмне бы очень помогла процедура закртия всех приложений ExcelИз Excel? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.11.2017, 11:12 |
|
|
start [/forum/topic.php?desktop=1&fid=61&tid=2172503]: |
0ms |
get settings: |
12ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
46ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
52ms |
get tp. blocked users: |
2ms |
others: | 315ms |
total: | 467ms |
0 / 0 |