Excel это не сложно
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
28.03.2024, 14:20:30

Войти
Название темы должно отражать её содержание.
Темы типа "ПОМОГИТЕ!!!", "Срочно!", "Не получается сделать", "Нужна помощь" и т.п. будут удаляться без объяснения причин
33 233 Сообщений в 5 454 Тем от 6 750 Пользователей
Последний пользователь: Alex1210
*
Перейти на сайт Хитрости Надстройка MulTEx Обучающие тренинги Наша группа ВКонтакте
Правила форума Начало Помощь Поиск Календарь Войти Регистрация Выйти
+  Excel это не сложно
|-+  Основные форумы
| |-+  Баги и глюки при работе с Excel и VBA
| | |-+  Прекращена работа Microsoft Excel
Страниц: [1]   Вниз
Печать
Автор Тема: Прекращена работа Microsoft Excel  (Прочитано 52870 раз)
0 Пользователей и 1 Гость смотрят эту тему.
RVL
Новичок
*

Репутация: +0/-0
Офлайн Офлайн

Сообщений: 3


Просмотр профиля E-mail
« : 25.04.2018, 15:48:36 »

Доброго всем!
Сломал всю голову, не откажите в помощи.
Начальные условия: Windows 7 / Office 2016
Суть проблемы: есть скрипт vbs, который CreateObject создает новый процесс Excel (важен именно новый процесс), отрывает нужную книгу, в которой находится и исполняется код, и запрещает через .IgnoreRemoteRequests открывать в этом же процессе другие книги. Проблем с открытием и работой макросов нет. НО! когда книга закрывается (через кнопку на форме), это неизбежно ведет к



С другой стороны, когда открытие книги происходит не через скрипт, а просто кликаньем по ней, то с закрытием никаких вопросов не возникает, все протекает в штатном режиме. Код на закрытие самый простой: ThisWorkbook.Close False.

Поиски решений:
1. пробовал через Application.Quit - не помогает:
2. пробовал искать процесс через GetObject, присваивать Set'ом, а потом .Quit - не помогает;
3. пробовал убирать .IgnoreRemoteRequests и остальные свойства Application - тоже не помогает;
4. убивать процесс через Shell - самая крайняя мера, если уж никаких вариантов.

Плюс, сам .IgnoreRemoteRequests странно себя ведет: в True устанавливается, но в False не возвращается, хотя в коде перед закрытием книги стоит .IgnoreRemoteRequests = False. Приходится перед закрытием запускать другой vbs, в котором CreateObject("Excel.Application"), .IgnoreRemoteRequests = False, .Quit.

Друзья, надеюсь на вас и уповаю! Улыбка
Заранее спасибо!
Записан
Дмитрий Щербаков(The_Prist)
Администратор
Ветеран
*****

Репутация: +485/-0
Офлайн Офлайн

Сообщений: 5 828



Просмотр профиля WWW
« Ответ #1 : 25.04.2018, 16:16:02 »

Код на закрытие самый простой: ThisWorkbook.Close False
не очень понимаю. Если открываете процесс через vbs - то какой может быть потом ThisWorkbook.Close? Почему не закрывать процесс теми средствами, коими он был создан?
Записан

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Пункты приёма Спасибов:    -41001332272872  -R298726502453
RVL
Новичок
*

Репутация: +0/-0
Офлайн Офлайн

Сообщений: 3


Просмотр профиля E-mail
« Ответ #2 : 03.05.2018, 17:08:56 »

В общем, все само заработало, ничего не исправлял. Я так и не понял, в чем была проблема. Дмитрий, с ThisWorkbook.Close работает, ошибка прекратилась. Почему Вы решили, что этот метод не имеет права на жизнь, ведь это ссылка на книгу, в которой находится и выполняется код. Соответственно, он закрывает именно тут книгу, которую нужно. Не пойму только, почему .IgnoreRemoteRequests = False не применяется перед закрытием, не пойму.
Записан
Дмитрий Щербаков(The_Prist)
Администратор
Ветеран
*****

Репутация: +485/-0
Офлайн Офлайн

Сообщений: 5 828



Просмотр профиля WWW
« Ответ #3 : 04.05.2018, 13:09:22 »

Почему Вы решили, что этот метод не имеет права на жизнь
Я не писал, что он не имеет права на жизнь. Я спросил, почему не закрывать книгу тем же vbs?
в коде перед закрытием книги стоит .IgnoreRemoteRequests = False
Вы ставите это свойство в True из vbs, а вернуть хотите уже из Excel. Это и может быть причиной.
Попробуйте из VBS просто открыть книгу, из него же выполнить код(тем же Run) и закрыть книгу с отключением всего нужного из этого же VBS.
Записан

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Пункты приёма Спасибов:    -41001332272872  -R298726502453
RVL
Новичок
*

Репутация: +0/-0
Офлайн Офлайн

Сообщений: 3


Просмотр профиля E-mail
« Ответ #4 : 08.05.2018, 06:54:53 »

Спасибо за помощь, в принципе я так и сделал: перед закрытием книги запускается .vbs и включает все отключенные свойства Application, т.е. возвращает его в исходное состояние. Но вот в чем была проблема, связанная с выводом ошибки, так и не разобрался, что очень жаль, для общего опыта было бы неплохо. Спасибо за помощь!!!
Записан
Дмитрий Щербаков(The_Prist)
Администратор
Ветеран
*****

Репутация: +485/-0
Офлайн Офлайн

Сообщений: 5 828



Просмотр профиля WWW
« Ответ #5 : 08.05.2018, 09:10:18 »

перед закрытием книги запускается .vbs и включает все отключенные свойства Application
Книгу лучше было бы тоже этим же VBS закрывать. Ошибка может быть из-за того, что процесс удерживается этим самым VBS и не может быть корректно завершен из самого Excel.
Записан

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Пункты приёма Спасибов:    -41001332272872  -R298726502453
Страниц: [1]   Вверх
Печать
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2011, Simple Machines Valid XHTML 1.0! Valid CSS!
Яндекс.Метрика Рейтинг@Mail.ru