从Word文档覆盖的Word调用Access 2016 UserForm

时间:2019-01-04 21:46:13

标签: vba ms-access ms-word

Word文档遮盖的Access 2016弹出用户窗体

我有一个Access 2016数据库,其中包含我在Word文档中使用的作者和参考。作者包含在与引用表关联的一个表中。

如果我需要输入到Word中的数据不在数据库中,则我将弹出一个Access UserForm,以将数据输入数据库中。问题是我使用并排打开的2个Word文档,这占据了全屏显示,并且Word文档后面覆盖了Access Userform。由于UserForm是弹出式和模式式的,因此冻结了所有内容。我想出的唯一解决方法是在调用弹出窗口时强制Word窗口最小化,但这不是最佳选择。

Word中的此Sub调用Access UserForm:

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

这是用户窗体的加载事件子项:

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 UserForm中。我需要找到一种方法,在调用Access UserForm时将其带到文档的前面,这样就不必最小化文档窗口。

1 个答案:

答案 0 :(得分:0)

使用来自Cindy Meister的链接:VBA API declarations. Bring window to front , regardless of application,我能够将以下代码行添加到Access UserFrom Form_Load事件中:

AppActivate Me.Caption

现在,无论何时调用UserForm,它都会放在最前面。