Access 2016 UserForm вызывается из документа Word, охватываемого документом Word - PullRequest
0 голосов
/ 05 января 2019

Доступ 2016 Всплывающая пользовательская форма, недоступная в Word Document

У меня есть база данных Access 2016, которая содержит авторов и ссылки, которые я использую в своих документах Word. Авторы содержатся в одной таблице, которая объединена с таблицей ссылок.

Если данных, которые мне нужно ввести в Word, нет в базе данных, у меня появляется Access UserForm, чтобы вывести данные в базу данных. Проблема в том, что я работаю с двумя документами Word, открытыми бок о бок, который занимает весь экран, а пользовательская форма Access скрыта за документами Word. Из-за того, что пользовательская форма всплывающая и модальная, она все замораживает. Единственный обходной путь, который я нашел, - заставить Windows свернуть окна при вызове всплывающего окна, но это не оптимально.

Этот Sub в Word вызывает пользовательскую форму Access:

Sub OpenDataEntryForm(stAuthor As String)
Dim acc As Access.Application
Dim lngAuthor As Long
Dim stOpenArgs As String

Application.WindowState = wdWindowStateMinimize
Set acc = New Access.Application
    With acc

        .Visible = False
        .OpenCurrentDatabase stAccPath 'stAccPath is a constant
        lngAuthor = .DLookup("[ID]", "[tblAuthors]", "[Authors] = '" & _
              stAuthor & "'")
        stOpenArgs = CStr(lngAuthor)
       .DoCmd.OpenForm "frmDataEntry", acNormal, , , acFormAdd, _
                 acDialog, stOpenArgs
       .Quit   
End With
Application.WindowState = wdWindowStateMaximize
End Sub

Это Sub события загрузки пользовательской формы:

Private Sub Form_Load()
    If Not IsNull(Me.OpenArgs) Then
        Me!Authors = CLng(Me.OpenArgs)
        Me.SetFocus
        Me!OriginalRef.SetFocus  
Else: Me!Authors.Locked = False
End If
End Sub

С помощью приведенного выше кода окна Word свертываются, поэтому данные можно вводить в пользовательскую форму Access. Мне нужно найти способ вывести Access UserForm в начало документа, когда он вызывается, чтобы мне не пришлось свернуть окна документа.

1 Ответ

0 голосов
/ 07 января 2019

Используя эту ссылку от Синди Мейстер: Объявления API VBA. Вывод окна вперед, независимо от приложения , я смог добавить эту строку кода в событие Access UserFrom Form_Load:

AppActivate Me.Caption

Теперь это выводит пользовательскую форму на передний план, когда она вызывается.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...