Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Переключение между окнами ACCESS и WORD
 
 автор: LAN   (20.08.2009 в 12:07)   личное сообщение
 
 

Имею в MSA процедуру, в которой создаю Word-объект WordApp, отрываю в нем doc-файл и говорю WordApp.Visible = True. Вижу на экране окно Word'a. И пускай себе висит, но мне нужно вернуться в окно MSA. Все это выглядит так:

Dim meHWND as long, WordApp As Object, Ret

meHWND = Application.hWndAccessApp ' запоминаю Hwnd Access'a
Set WordApp = CreateObject("Word.Application")
WordApp.Documents.Open "C:\MUSOR.DOC", , true
WordApp.Visible = True ' показываю открытый документ
Ret = ShowWindow(meHWND, 5) ' с помощью API активизирую окно Access
Ret = ShowWindow(meHWND, 3) ' с помощью API отображаю в развернутом виде

но вижу окно Word'a :(
Ret = 16 (> 0), т.е. ф-ция ShowWindow вроде бы отрабатывает правильно
Читаю по запомненному meHWND заголовок окна - то что надо

Где грабли?

  Ответить  
 
 автор: osmor   (20.08.2009 в 12:31)   личное сообщение
 
 

может так попробовать
dim frm as form
set frm = SCREEN.ACTIVEFORM
frm.setfocus
frm!ПолеИлиКонтролВФорме.setfocus

  Ответить  
 
 автор: LAN   (20.08.2009 в 13:10)   личное сообщение
 
 

После

WordApp.Visible = True ' показываю открытый документ

написал в лоб

Forms!MAIN.SetFocus

Результат тот же.
И правильно, ведь речь идет об окнах Windows.

  Ответить  
 
 автор: LAN   (20.08.2009 в 13:24)   личное сообщение
 
 

1

  Ответить  
 
 автор: osmor   (20.08.2009 в 14:22)   личное сообщение
 
 

форма может получить фокус только если в ней нет ни одного контрола которые может получать фокус, по этому кроме
Forms!MAIN.SetFocus
нужно еще
Forms!MAIN.controls("имяПоля").SetFocus

  Ответить  
 
 автор: Denis V.   (20.08.2009 в 15:30)   личное сообщение
 
 

AppActivate F1

  Ответить  
 
 автор: Анатолий (Киев)   (20.08.2009 в 16:06)   личное сообщение
 
 

Может задержка нужна между WordApp.Visible = True и ShowWindow?
Я бы просто свернул окно Word-а.

  Ответить  
 
 автор: LAN   (21.08.2009 в 08:46)   личное сообщение
 
 

Все мучения закончились путем замены

Ret = ShowWindow...
на
Ret = SetForegroundWindow(meHWND)

Большое спасибо участникам за участие, сочуствие и потраченное время. Считаю тему закрытой.

  Ответить  
 
 автор: LAN   (21.08.2009 в 08:53)   личное сообщение
 
 

Вдогонку. Окончательный рез-т:

Dim WordApp As Object, Ret

Set WordApp = CreateObject("Word.Application")
WordApp.Documents.Open "C:\MUSOR.DOC", , true
WordApp.Visible = True ' показываю открытый документ
Ret = SetForegroundWindow(Application.hWndAccessApp) ' возврат в Access-окно

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList