Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Перехват диалоговых окон кодом - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
Страница 1 из 212»
Модератор форума: _Boroda_, Pelena, Manyasha, SLAVICK 
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Перехват диалоговых окон кодом (Макросы/Sub)
Перехват диалоговых окон кодом
AlexMen Дата: Четверг, 03.03.2016, 18:36 | Сообщение № 1
Группа: Заблокированные
Ранг: Участник
Сообщений: 66
Репутация: 4 ±
Замечаний: 100% ±

Excel 2010
Добрый день.

есть такая загвоздка

книга совместного доступа, в неё макросом из другой книги записываются данные
при синхронной записе выскакивает диалоговое окно (скрин)

Вопрос можно ли как то кодом его перехватить?
мол
Если выскочило такое окно то
нажать кнопку в нем "сохранить все чужие записи"
код
msgbox "Вы опоздали"
К сообщению приложен файл: 1772647.jpg(38Kb)


lebensvoll отпишите на почту, а то меня _Boroda_ забанил, я Вам функцию сброшу
 
Ответить
СообщениеДобрый день.

есть такая загвоздка

книга совместного доступа, в неё макросом из другой книги записываются данные
при синхронной записе выскакивает диалоговое окно (скрин)

Вопрос можно ли как то кодом его перехватить?
мол
Если выскочило такое окно то
нажать кнопку в нем "сохранить все чужие записи"
код
msgbox "Вы опоздали"

Автор - AlexMen
Дата добавления - 03.03.2016 в 18:36
Karataev Дата: Суббота, 05.03.2016, 22:51 | Сообщение № 2
Группа: Проверенные
Ранг: Ветеран
Сообщений: 837
Репутация: 312 ±
Замечаний: 0% ±

Excel
Вкладка Рецензирование - Доступ к книге - вкладка Подробнее - радиокнопка "ранее сохраненные имеют преимущество".
Это скроет это диалоговое окно.




Сообщение отредактировал Karataev - Суббота, 05.03.2016, 22:54
 
Ответить
СообщениеВкладка Рецензирование - Доступ к книге - вкладка Подробнее - радиокнопка "ранее сохраненные имеют преимущество".
Это скроет это диалоговое окно.

Автор - Karataev
Дата добавления - 05.03.2016 в 22:51
al-Ex Дата: Воскресенье, 06.03.2016, 11:38 | Сообщение № 3
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 168
Репутация: 57 ±
Замечаний: 0% ±

Excel 2010
можно ли как то кодом его перехватить
Чемпион по перехватыванию окон, - "Автоит"
"Работа с окнами : передвижение, скрытие, отображение, изменение размера, активизация, закрытие и т. д.
К окнам можно обращаться по их заголовку, отображаемому тексту, размеру, расположению, классу, по внутренним дескрипторам "


Сообщение отредактировал al-Ex - Воскресенье, 06.03.2016, 11:55
 
Ответить
Сообщение
можно ли как то кодом его перехватить
Чемпион по перехватыванию окон, - "Автоит"
"Работа с окнами : передвижение, скрытие, отображение, изменение размера, активизация, закрытие и т. д.
К окнам можно обращаться по их заголовку, отображаемому тексту, размеру, расположению, классу, по внутренним дескрипторам "

Автор - al-Ex
Дата добавления - 06.03.2016 в 11:38
AlexMen Дата: Понедельник, 07.03.2016, 21:49 | Сообщение № 4
Группа: Заблокированные
Ранг: Участник
Сообщений: 66
Репутация: 4 ±
Замечаний: 100% ±

Excel 2010
Вкладка Рецензирование - Доступ к книге - вкладка Подробнее - радиокнопка "ранее сохраненные имеют преимущество".
Это скроет это диалоговое окно.

это работает некорректно поэтому и ищу способ перехвата

Чемпион по перехватыванию окон, - "Автоит"

это доп программа? по ссылке прочел ток о создание окон.....не увидел перехвата


lebensvoll отпишите на почту, а то меня _Boroda_ забанил, я Вам функцию сброшу
 
Ответить
Сообщение
Вкладка Рецензирование - Доступ к книге - вкладка Подробнее - радиокнопка "ранее сохраненные имеют преимущество".
Это скроет это диалоговое окно.

это работает некорректно поэтому и ищу способ перехвата

Чемпион по перехватыванию окон, - "Автоит"

это доп программа? по ссылке прочел ток о создание окон.....не увидел перехвата

Автор - AlexMen
Дата добавления - 07.03.2016 в 21:49
al-Ex Дата: Среда, 09.03.2016, 02:06 | Сообщение № 5
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 168
Репутация: 57 ±
Замечаний: 0% ±

Excel 2010
прочел ток о создание окон.....не увидел перехвата
Вот посмотри как похожую тему там решают Автоматическое закрытие модальных окошек


Сообщение отредактировал al-Ex - Среда, 09.03.2016, 02:31
 
Ответить
Сообщение
прочел ток о создание окон.....не увидел перехвата
Вот посмотри как похожую тему там решают Автоматическое закрытие модальных окошек

Автор - al-Ex
Дата добавления - 09.03.2016 в 02:06
AlexMen Дата: Среда, 09.03.2016, 15:14 | Сообщение № 6
Группа: Заблокированные
Ранг: Участник
Сообщений: 66
Репутация: 4 ±
Замечаний: 100% ±

Excel 2010
Вот посмотри как похожую тему там решают Автоматическое закрытие модальных окошек


Это сторонние ПО
хотелось бы в ВБА тоже самое

что нить на подобие вычисление окон windows(1).Caption ....


lebensvoll отпишите на почту, а то меня _Boroda_ забанил, я Вам функцию сброшу
 
Ответить
Сообщение
Вот посмотри как похожую тему там решают Автоматическое закрытие модальных окошек


Это сторонние ПО
хотелось бы в ВБА тоже самое

что нить на подобие вычисление окон windows(1).Caption ....

Автор - AlexMen
Дата добавления - 09.03.2016 в 15:14
Gustav Дата: Среда, 09.03.2016, 20:23 | Сообщение № 7
Группа: Друзья
Ранг: Старожил
Сообщений: 1348
Репутация: 534 ±
Замечаний: 0% ±

начинал с Excel 4.0...
Можно попробовать следующую схему. Запускается два отдельных экземпляра Excel. В одном идёт работа с исходной редактируемой книгой с общим доступом, для которой необходимо решать вопрос о конфликте доступа. В другом запускается некий "проверяльщик" окон, который активизируется каждые несколько секунд (в примере ниже - каждые 5 секунд). Проверяльщик представляет собой макрос (естественно, в другой рабочей книге), который при обнаружении в системе окон с заданными названиями посылает в них нужную последовательность нажатий клавиш. После проверки окон макрос самопрограммирует себя на запуск через следующие 5 секунд.
[vba]
Код
Sub checkWindows()
    On Error Resume Next
     
    'ищется окно о конфликте доступа
    AppActivate "Возник конфликт доступа"
    If Err Then
        Err.Clear
    Else
        SendKeys "{TAB 3}{ENTER}" 'нажимается Enter после 3-х Tab'ов в диалоговом окне
    End If
        
    'ищется окно с сообщением "Книга обновлена с учетом изменений, внесенных другими пользователями"
    AppActivate "Microsoft Excel"
    If Err Then
        Err.Clear
    Else
        SendKeys "{ENTER}" 'нажимается ОК
    End If
    
    Application.OnTime Now + TimeValue("00:00:05"), "checkWindows" 'проверка окон каждые 5 секунд
End Sub
[/vba]


Мой tip box - яд 41001663842605
 
Ответить
СообщениеМожно попробовать следующую схему. Запускается два отдельных экземпляра Excel. В одном идёт работа с исходной редактируемой книгой с общим доступом, для которой необходимо решать вопрос о конфликте доступа. В другом запускается некий "проверяльщик" окон, который активизируется каждые несколько секунд (в примере ниже - каждые 5 секунд). Проверяльщик представляет собой макрос (естественно, в другой рабочей книге), который при обнаружении в системе окон с заданными названиями посылает в них нужную последовательность нажатий клавиш. После проверки окон макрос самопрограммирует себя на запуск через следующие 5 секунд.
[vba]
Код
Sub checkWindows()
    On Error Resume Next
     
    'ищется окно о конфликте доступа
    AppActivate "Возник конфликт доступа"
    If Err Then
        Err.Clear
    Else
        SendKeys "{TAB 3}{ENTER}" 'нажимается Enter после 3-х Tab'ов в диалоговом окне
    End If
        
    'ищется окно с сообщением "Книга обновлена с учетом изменений, внесенных другими пользователями"
    AppActivate "Microsoft Excel"
    If Err Then
        Err.Clear
    Else
        SendKeys "{ENTER}" 'нажимается ОК
    End If
    
    Application.OnTime Now + TimeValue("00:00:05"), "checkWindows" 'проверка окон каждые 5 секунд
End Sub
[/vba]

Автор - Gustav
Дата добавления - 09.03.2016 в 20:23
AlexMen Дата: Четверг, 10.03.2016, 19:57 | Сообщение № 8
Группа: Заблокированные
Ранг: Участник
Сообщений: 66
Репутация: 4 ±
Замечаний: 100% ±

Excel 2010
Gustav,
интересно бесконечный цикл не получается
вставил в процедуру старт сохранить книгу но макрос останавливается на ней когда это окно появляется, после ручных манипуляций закрыв его, макрос продолжается
в буфере появляется ошибка 1004 (но уже далее макрос бесполезен все произошло_

[vba]
Код
  On Error Resume Next
    Workbooks(1).Save
    'ищется окно о конфликте доступа
    AppActivate "Возник конфликт доступа"
[/vba]


lebensvoll отпишите на почту, а то меня _Boroda_ забанил, я Вам функцию сброшу
 
Ответить
СообщениеGustav,
интересно бесконечный цикл не получается
вставил в процедуру старт сохранить книгу но макрос останавливается на ней когда это окно появляется, после ручных манипуляций закрыв его, макрос продолжается
в буфере появляется ошибка 1004 (но уже далее макрос бесполезен все произошло_

[vba]
Код
  On Error Resume Next
    Workbooks(1).Save
    'ищется окно о конфликте доступа
    AppActivate "Возник конфликт доступа"
[/vba]

Автор - AlexMen
Дата добавления - 10.03.2016 в 19:57
Gustav Дата: Четверг, 10.03.2016, 23:30 | Сообщение № 9
Группа: Друзья
Ранг: Старожил
Сообщений: 1348
Репутация: 534 ±
Замечаний: 0% ±

начинал с Excel 4.0...
интересно бесконечный цикл не получается
вставил в процедуру

AlexMen, ай-ай! Вы меня не совсем поняли, даже совсем не поняли... Моя процедура - в законченном виде, из нее не надо выдергивать отдельные операторы и пытаться пристроить куда-то в ваш макрос, смешивая всё "в одном флаконе". Ее надо просто запустить в том виде, как я привел, в ДРУГОМ ЭКЗЕМПЛЯРЕ Excel. И она там сама будет тихонько крутиться... А вы тем временем работает в ПЕРВОМ ЭКЗЕМПЛЯРЕ Excel - редактируете книгу вручную или макросом.

Если не очень понятно про "другой экземпляр" (можно погуглить в принципе), то давайте просто возьмем другое приложение - допустим, Word. Моя процедура там тоже заработает. Т.е. открывайте новый документ Word, идите в нём в редактор Visual Basic, копируйте туда мою процедуру и запускайте по F5.

Далее запускаете Excel самым обычным образом, открываете в нём вашу рабочую книгу и делаете что вам надо. Если появится окно "Возник конфликт доступа", то не закрывайте его, а подождите в пределах 5 секунд (понятно почему?) и оно само закроется. Далее в пределах 5 секунд закроется и сообщение "Книга обновлена...".

Можно даже провести такой эксперимент для наглядности. В Excel запустите не свою книгу, а простой макрос и наблюдайте как возникнут и САМИ ЗАКРОЮТСЯ с интервалом 5 секунд (понятно почему?) все 10 "приветов":
[vba]
Код
Sub test()
    Dim i
    For i = 1 To 10
        MsgBox "Привет-" & i, , "Microsoft Excel"
    Next
End Sub
[/vba]
Таким образом, картина получается следующая: у нас привычно трудится Excel, а "надсмотрщик" Word по мере необходимости шлёт ему нужные команды.


Мой tip box - яд 41001663842605
 
Ответить
Сообщение
интересно бесконечный цикл не получается
вставил в процедуру

AlexMen, ай-ай! Вы меня не совсем поняли, даже совсем не поняли... Моя процедура - в законченном виде, из нее не надо выдергивать отдельные операторы и пытаться пристроить куда-то в ваш макрос, смешивая всё "в одном флаконе". Ее надо просто запустить в том виде, как я привел, в ДРУГОМ ЭКЗЕМПЛЯРЕ Excel. И она там сама будет тихонько крутиться... А вы тем временем работает в ПЕРВОМ ЭКЗЕМПЛЯРЕ Excel - редактируете книгу вручную или макросом.

Если не очень понятно про "другой экземпляр" (можно погуглить в принципе), то давайте просто возьмем другое приложение - допустим, Word. Моя процедура там тоже заработает. Т.е. открывайте новый документ Word, идите в нём в редактор Visual Basic, копируйте туда мою процедуру и запускайте по F5.

Далее запускаете Excel самым обычным образом, открываете в нём вашу рабочую книгу и делаете что вам надо. Если появится окно "Возник конфликт доступа", то не закрывайте его, а подождите в пределах 5 секунд (понятно почему?) и оно само закроется. Далее в пределах 5 секунд закроется и сообщение "Книга обновлена...".

Можно даже провести такой эксперимент для наглядности. В Excel запустите не свою книгу, а простой макрос и наблюдайте как возникнут и САМИ ЗАКРОЮТСЯ с интервалом 5 секунд (понятно почему?) все 10 "приветов":
[vba]
Код
Sub test()
    Dim i
    For i = 1 To 10
        MsgBox "Привет-" & i, , "Microsoft Excel"
    Next
End Sub
[/vba]
Таким образом, картина получается следующая: у нас привычно трудится Excel, а "надсмотрщик" Word по мере необходимости шлёт ему нужные команды.

Автор - Gustav
Дата добавления - 10.03.2016 в 23:30
AlexMen Дата: Пятница, 11.03.2016, 01:08 | Сообщение № 10
Группа: Заблокированные
Ранг: Участник
Сообщений: 66
Репутация: 4 ±
Замечаний: 100% ±

Excel 2010
Gustav, понял логику, но где то в ней косяк

1. не закрывает ваши окна
2. неправильное если(всегда жмет энтер)
[vba]
Код
    If Err Then
        Err.Clear
    Else
        SendKeys "{ENTER}" 'нажимается ОК
    End If
[/vba]
как я понял тут и проблема с энтером, мол если нет ошибки то Энтер жмет , утром попробую с вашем примером поколдовать, хоть есть направление для копания.


lebensvoll отпишите на почту, а то меня _Boroda_ забанил, я Вам функцию сброшу
 
Ответить
СообщениеGustav, понял логику, но где то в ней косяк

1. не закрывает ваши окна
2. неправильное если(всегда жмет энтер)
[vba]
Код
    If Err Then
        Err.Clear
    Else
        SendKeys "{ENTER}" 'нажимается ОК
    End If
[/vba]
как я понял тут и проблема с энтером, мол если нет ошибки то Энтер жмет , утром попробую с вашем примером поколдовать, хоть есть направление для копания.

Автор - AlexMen
Дата добавления - 11.03.2016 в 01:08
Gustav Дата: Пятница, 11.03.2016, 14:31 | Сообщение № 11
Группа: Друзья
Ранг: Старожил
Сообщений: 1348
Репутация: 534 ±
Замечаний: 0% ±

начинал с Excel 4.0...
1. не закрывает ваши окна
2. неправильное если(всегда жмет энтер)

AlexMen, может у вас основное окно Excel называется "Microsoft Excel"? И именно оно принимает на себя нажатия Enter? У меня-то в версии 13 названия окон Excel начинаются с имени книги...

В любом случае, для чистоты эксперимента можно строки "Microsoft Excel" в процедурах checkWindows и test превратить во что-нибудь более редкое и уникальное, например, "Мой Excel", после чего повторить все мероприятия. Попробуете?


Мой tip box - яд 41001663842605
 
Ответить
Сообщение
1. не закрывает ваши окна
2. неправильное если(всегда жмет энтер)

AlexMen, может у вас основное окно Excel называется "Microsoft Excel"? И именно оно принимает на себя нажатия Enter? У меня-то в версии 13 названия окон Excel начинаются с имени книги...

В любом случае, для чистоты эксперимента можно строки "Microsoft Excel" в процедурах checkWindows и test превратить во что-нибудь более редкое и уникальное, например, "Мой Excel", после чего повторить все мероприятия. Попробуете?

Автор - Gustav
Дата добавления - 11.03.2016 в 14:31
AlexMen Дата: Пятница, 11.03.2016, 16:13 | Сообщение № 12
Группа: Заблокированные
Ранг: Участник
Сообщений: 66
Репутация: 4 ±
Замечаний: 100% ±

Excel 2010
обязательно попробую, еще руки не дошли.


lebensvoll отпишите на почту, а то меня _Boroda_ забанил, я Вам функцию сброшу

Сообщение отредактировал AlexMen - Пятница, 11.03.2016, 16:14
 
Ответить
Сообщениеобязательно попробую, еще руки не дошли.

Автор - AlexMen
Дата добавления - 11.03.2016 в 16:13
AlexMen Дата: Пятница, 11.03.2016, 16:45 | Сообщение № 13
Группа: Заблокированные
Ранг: Участник
Сообщений: 66
Репутация: 4 ±
Замечаний: 100% ±

Excel 2010
По тестил, вывод один код останавливается при появление Любого окна(диологового)
вот таким макаром сделал макрос и запусти (добавил счетчик циклов) и простыми наблюдениями понятно что макрос останавливается

[vba]
Код
Sub checkWindows()
    On Error Resume Next
    AppActivate "12345"
    If Err Then
        Err.Clear
    Else
        SendKeys "{ENTER}" 'нажимается ОК
    End If
    
    Workbooks("книга2.xlsm").Worksheets("Лист1").Cells(1, 1) = Workbooks("книга2.xlsm").Worksheets("Лист1").Cells(1, 1) + 1

    Application.OnTime Now + TimeValue("00:00:05"), "checkWindows" 'проверка окон каждые 5 секунд

End Sub

Sub test()
    Dim i
    For i = 1 To 10
        MsgBox "Привет-" & i, , "12345"
    Next
End Sub
[/vba]


lebensvoll отпишите на почту, а то меня _Boroda_ забанил, я Вам функцию сброшу
 
Ответить
СообщениеПо тестил, вывод один код останавливается при появление Любого окна(диологового)
вот таким макаром сделал макрос и запусти (добавил счетчик циклов) и простыми наблюдениями понятно что макрос останавливается

[vba]
Код
Sub checkWindows()
    On Error Resume Next
    AppActivate "12345"
    If Err Then
        Err.Clear
    Else
        SendKeys "{ENTER}" 'нажимается ОК
    End If
    
    Workbooks("книга2.xlsm").Worksheets("Лист1").Cells(1, 1) = Workbooks("книга2.xlsm").Worksheets("Лист1").Cells(1, 1) + 1

    Application.OnTime Now + TimeValue("00:00:05"), "checkWindows" 'проверка окон каждые 5 секунд

End Sub

Sub test()
    Dim i
    For i = 1 To 10
        MsgBox "Привет-" & i, , "12345"
    Next
End Sub
[/vba]

Автор - AlexMen
Дата добавления - 11.03.2016 в 16:45
Gustav Дата: Пятница, 11.03.2016, 17:40 | Сообщение № 14
Группа: Друзья
Ранг: Старожил
Сообщений: 1348
Репутация: 534 ±
Замечаний: 0% ±

начинал с Excel 4.0...
простыми наблюдениями понятно что макрос останавливается

AlexMen, Вы можете выполнить мои рекомендации из сообщения №9 буквально-дословно ?

А именно: запустить checkWindows() в ВОРДЕ (! не в Excel, а в WORD !), а потом в EXCEL запустить процедуру test. Обе процедуры - в моей изначальной редакции, без ваших дополнительных операторов - т.е. из сообщений №7 и №9. Но, разумеется, заменив строки "Microsoft Excel" на "12345". А?

P.S. Коллеги, кто еще читает топик, если в не в напряг, подсобите с экспериментом - выполните у себя несложное упражнение из сообщения № 9 ? Всем откликнувшимся - спасибо!


Мой tip box - яд 41001663842605

Сообщение отредактировал Gustav - Пятница, 11.03.2016, 17:46
 
Ответить
Сообщение
простыми наблюдениями понятно что макрос останавливается

AlexMen, Вы можете выполнить мои рекомендации из сообщения №9 буквально-дословно ?

А именно: запустить checkWindows() в ВОРДЕ (! не в Excel, а в WORD !), а потом в EXCEL запустить процедуру test. Обе процедуры - в моей изначальной редакции, без ваших дополнительных операторов - т.е. из сообщений №7 и №9. Но, разумеется, заменив строки "Microsoft Excel" на "12345". А?

P.S. Коллеги, кто еще читает топик, если в не в напряг, подсобите с экспериментом - выполните у себя несложное упражнение из сообщения № 9 ? Всем откликнувшимся - спасибо!

Автор - Gustav
Дата добавления - 11.03.2016 в 17:40
Manyasha Дата: Пятница, 11.03.2016, 17:52 | Сообщение № 15
Группа: Модераторы
Ранг: Старожил
Сообщений: 1822
Репутация: 758 ±
Замечаний: 0% ±

Excel 2007, 2010
в ВОРДЕ

можно и в Excel, только из другого процесса
в ДРУГОМ ЭКЗЕМПЛЯРЕ Excel

В рабочей книге:
[vba]
Код
Dim objExl, wb
Private Sub Workbook_Open()
    Set myVB = ThisWorkbook
    Set objExl = CreateObject("Excel.Application")
    Set wb = objExl.Workbooks.Open(ThisWorkbook.Path & "\" & "test-checkWin.xlsm")
    myVB.Activate
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    On Error Resume Next
    objExl.Quit
End Sub
[/vba]там же макрос test (на кнопку повесила)
В книге test-checkWin.xlsm макрос Константина (Gustav) checkWindows
Открываем книгу test-book.xlsm, нажимаем кнопку "тест"
UPD
макрос checkWindows - сократила (1 раз enter нажимает и усё), т.к. сейчас нет возможности проверить работу файла в общем доступе.
Естественно, для работы вместо короткой версии макроса нужно будет вставить полную пост №7
К сообщению приложен файл: checkWindows.rar(27Kb)


marinamorozova_box@mail.ru
ЯД: 410013299366744 WM: R193491431804


Сообщение отредактировал Manyasha - Пятница, 11.03.2016, 18:00
 
Ответить
Сообщение
в ВОРДЕ

можно и в Excel, только из другого процесса
в ДРУГОМ ЭКЗЕМПЛЯРЕ Excel

В рабочей книге:
[vba]
Код
Dim objExl, wb
Private Sub Workbook_Open()
    Set myVB = ThisWorkbook
    Set objExl = CreateObject("Excel.Application")
    Set wb = objExl.Workbooks.Open(ThisWorkbook.Path & "\" & "test-checkWin.xlsm")
    myVB.Activate
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    On Error Resume Next
    objExl.Quit
End Sub
[/vba]там же макрос test (на кнопку повесила)
В книге test-checkWin.xlsm макрос Константина (Gustav) checkWindows
Открываем книгу test-book.xlsm, нажимаем кнопку "тест"
UPD
макрос checkWindows - сократила (1 раз enter нажимает и усё), т.к. сейчас нет возможности проверить работу файла в общем доступе.
Естественно, для работы вместо короткой версии макроса нужно будет вставить полную пост №7

Автор - Manyasha
Дата добавления - 11.03.2016 в 17:52
Gustav Дата: Пятница, 11.03.2016, 18:17 | Сообщение № 16
Группа: Друзья
Ранг: Старожил
Сообщений: 1348
Репутация: 534 ±
Замечаний: 0% ±

начинал с Excel 4.0...
Ай, Manyasha, круто замесила! :D Большое спасибо за ассистирование при проведении "лабораторной работы"! yes Правда, думаю, "ученику" надо всё-таки самостоятельно и через Ворд попробовать. Тоже! Для исчерпывающего, так сказать, осознания.


Мой tip box - яд 41001663842605

Сообщение отредактировал Gustav - Пятница, 11.03.2016, 18:22
 
Ответить
СообщениеАй, Manyasha, круто замесила! :D Большое спасибо за ассистирование при проведении "лабораторной работы"! yes Правда, думаю, "ученику" надо всё-таки самостоятельно и через Ворд попробовать. Тоже! Для исчерпывающего, так сказать, осознания.

Автор - Gustav
Дата добавления - 11.03.2016 в 18:17
AlexMen Дата: Пятница, 11.03.2016, 19:53 | Сообщение № 17
Группа: Заблокированные
Ранг: Участник
Сообщений: 66
Репутация: 4 ±
Замечаний: 100% ±

Excel 2010
Gustav, из ворда работает. как вариант возможно но ради этого держать ворд запущенным...
да и в последствие увязать результат
мол если окно появилось то сделать тот то.(в моем случае данные находящиеся в массиве макроса который вызывает иногда это окно)

основа этого кода это AppActivate "12345" которая при отсутствие окна выдает ту или иную ошибку которая в дальнейшем обрабатывается
проблема в том что если этот вставить в основной макрос то он останавливается в момент появление окна.


lebensvoll отпишите на почту, а то меня _Boroda_ забанил, я Вам функцию сброшу
 
Ответить
СообщениеGustav, из ворда работает. как вариант возможно но ради этого держать ворд запущенным...
да и в последствие увязать результат
мол если окно появилось то сделать тот то.(в моем случае данные находящиеся в массиве макроса который вызывает иногда это окно)

основа этого кода это AppActivate "12345" которая при отсутствие окна выдает ту или иную ошибку которая в дальнейшем обрабатывается
проблема в том что если этот вставить в основной макрос то он останавливается в момент появление окна.

Автор - AlexMen
Дата добавления - 11.03.2016 в 19:53
AlexMen Дата: Пятница, 11.03.2016, 20:08 | Сообщение № 18
Группа: Заблокированные
Ранг: Участник
Сообщений: 66
Репутация: 4 ±
Замечаний: 100% ±

Excel 2010
Manyasha,
Вот у Вас уже то с чем удобно работать, Книга с макросом работают в инвизе в отдельном процессе
Правильно расшифровал?

Set myVB = ThisWorkbook'книга в переменную

Set objExl = CreateObject("Excel.Application")' создание отдельного процесс

Set wb = objExl.Workbooks.Open(ThisWorkbook.Path & "\" & "test-checkWin.xlsm") ' objExl открыть книгу с макросом в отдельном процесс

myVB.Activate ' переход обратно к книги


lebensvoll отпишите на почту, а то меня _Boroda_ забанил, я Вам функцию сброшу

Сообщение отредактировал AlexMen - Пятница, 11.03.2016, 20:29
 
Ответить
СообщениеManyasha,
Вот у Вас уже то с чем удобно работать, Книга с макросом работают в инвизе в отдельном процессе
Правильно расшифровал?

Set myVB = ThisWorkbook'книга в переменную

Set objExl = CreateObject("Excel.Application")' создание отдельного процесс

Set wb = objExl.Workbooks.Open(ThisWorkbook.Path & "\" & "test-checkWin.xlsm") ' objExl открыть книгу с макросом в отдельном процесс

myVB.Activate ' переход обратно к книги

Автор - AlexMen
Дата добавления - 11.03.2016 в 20:08
AlexMen Дата: Пятница, 11.03.2016, 21:00 | Сообщение № 19
Группа: Заблокированные
Ранг: Участник
Сообщений: 66
Репутация: 4 ±
Замечаний: 100% ±

Excel 2010
чет не могу убить процесс не закрывай книги, на форумах пишут достаточно = Nothingно в данном случаем не помогает

[vba]
Код
Sub УбитьПроцесс()

'Set objExl = Nothing
    On Error Resume Next
    objExl.Quit
    objExl.Close
    
End Sub
[/vba]


lebensvoll отпишите на почту, а то меня _Boroda_ забанил, я Вам функцию сброшу
 
Ответить
Сообщениечет не могу убить процесс не закрывай книги, на форумах пишут достаточно = Nothingно в данном случаем не помогает

[vba]
Код
Sub УбитьПроцесс()

'Set objExl = Nothing
    On Error Resume Next
    objExl.Quit
    objExl.Close
    
End Sub
[/vba]

Автор - AlexMen
Дата добавления - 11.03.2016 в 21:00
Gustav Дата: Пятница, 11.03.2016, 23:06 | Сообщение № 20
Группа: Друзья
Ранг: Старожил
Сообщений: 1348
Репутация: 534 ±
Замечаний: 0% ±

начинал с Excel 4.0...
из ворда работает. как вариант возможно но ради этого держать ворд запущенным...

Ворд был предложен как НЕЧТО, в чём возможен без больших усилий запуск макроса, работающего независимо от основного (а-ля резидентная программа). Сделано это было исключительно в учебных целях - потому что вы не смогли/не захотели запускать второй независимый экземпляр Excel, изначально предлагавшийся.

А что-то "запущенным" все равно ведь придется держать - видимый Word или невидимый второй Excel или вообще Access - так какая разница? ;)


Мой tip box - яд 41001663842605
 
Ответить
Сообщение
из ворда работает. как вариант возможно но ради этого держать ворд запущенным...

Ворд был предложен как НЕЧТО, в чём возможен без больших усилий запуск макроса, работающего независимо от основного (а-ля резидентная программа). Сделано это было исключительно в учебных целях - потому что вы не смогли/не захотели запускать второй независимый экземпляр Excel, изначально предлагавшийся.

А что-то "запущенным" все равно ведь придется держать - видимый Word или невидимый второй Excel или вообще Access - так какая разница? ;)

Автор - Gustav
Дата добавления - 11.03.2016 в 23:06
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Перехват диалоговых окон кодом (Макросы/Sub)
Страница 1 из 212»
Поиск:

Яндекс цитирования
© 2010-2017 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!