Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Ответить на диалоговое окно / 7 сообщений из 7, страница 1 из 1
22.06.2008, 21:34
    #35387304
cadrus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ответить на диалоговое окно
У меня ситуация следующая:
есть приложение, которое использует Exel-таблицу для хранения данных.
Я написал форму, которая работает с инфой в таблице.
По закрытию интерфейса приложение видит, что данные в таблице изменились, и через какое-то время (в течении которого напряженно думает), выдает диалоговое окно, на котором нужно нажать ок, чтоб подтвердить изменения.
Задача: программно нажать на ок, чтоб пользователь окна не наблюдал.
Сделал тестовый маленький файл с командой SendKeys "{ENTER}", но работает через раз, а в большом рабочем файле пару раз сработало, а потом перестало.
Посоветуйте, пжлуста, как можно отследить, когда появляется это окно, и послать ему, именно ему родному - че-нить, чтоб оно было довольно?
Прочитал про комманды FindWindow, hwnd, BM_CLICK, и др., но как это работает, очень туго понимаю, тем более с английским напряженка...
...
Рейтинг: 0 / 0
22.06.2008, 22:46
    #35387361
ВasiС
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ответить на диалоговое окно
ActiveWorkbook.Save ?
...
Рейтинг: 0 / 0
22.06.2008, 23:02
    #35387378
cadrus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ответить на диалоговое окно
ВasiСActiveWorkbook.Save ?

Это есть, вот код закрытия.
После выгрузки UserForm2 появляется диалоговое окно

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Public Function CloseANDExit()
Dim oWB As Excel.Workbook
ThisApplication.SilentOperation = True
Set oWB = oWS.Parent
oWB.Save
oWB.Close
oExcelApp.Quit
Set oExcelApp = Nothing
oFactory.Parent.Update
ThisApplication.SilentOperation = False
UserForm2.Hide
Unload UserForm2
End Function
...
Рейтинг: 0 / 0
23.06.2008, 23:00
    #35389629
ВasiС
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ответить на диалоговое окно
Видимо между
Код: plaintext
oWB.Save
и
Код: plaintext
Unload UserForm2 
в открытой книге что-то изменяется, поэтому и появляется окно с предложением сохранить изменения.

хотя после этого:
Код: plaintext
1.
2.
oWB.Close
oExcelApp.Quit
Set oExcelApp = Nothing
в принципе Эксель должен быть убит...
А скриншот окна можно?
...
Рейтинг: 0 / 0
24.06.2008, 09:11
    #35389882
big-duke
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ответить на диалоговое окно
Application.DisplayAlerts =False
и не будет никаких вопросов от экселя.
...
Рейтинг: 0 / 0
26.06.2008, 15:19
    #35396805
cadrus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ответить на диалоговое окно
ВasiСВидимо между
Код: plaintext
oWB.Save
и
Код: plaintext
Unload UserForm2 
в открытой книге что-то изменяется, поэтому и появляется окно с предложением сохранить изменения.

хотя после этого:
Код: plaintext
1.
2.
oWB.Close
oExcelApp.Quit
Set oExcelApp = Nothing
в принципе Эксель должен быть убит...
А скриншот окна можно?

big-duke Application.DisplayAlerts =False
и не будет никаких вопросов от экселя.


Эксель есть убит, окно не Экселя, а приложения, которое его использует
...
Рейтинг: 0 / 0
01.07.2008, 00:05
    #35402892
cadrus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ответить на диалоговое окно
Получилось погасить окно так:
Код: plaintext
1.
AppActivate ThisApplication.Caption, True
SendKeys "{ENTER}", True
А как можно отловить само окно, независимо от активности приложения?
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Ответить на диалоговое окно / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]