You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Access 2013调用Word拼写检查后窗口无法自动激活问题求助

解决Access调用Word拼写检查后无法自动回到前台的问题

问题分析

原代码里的AppActivate和SetForegroundWindow无法让Access自动回到前台,核心原因是Windows的前台窗口激活权限限制——只有当前持有输入焦点的线程才能激活其他窗口,Word退出后的线程残留状态会导致Access线程无法直接获取激活权限。

解决方案

需要补充API函数绕过激活限制,同时调整激活逻辑的顺序:

  1. 在标准模块中添加以下API声明(无标准模块则新建一个):
Declare Function SetForegroundWindow Lib "user32" (ByVal hwnd As Long) As Long
Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hwnd As Long, lpdwProcessId As Long) As Long
Declare Function AttachThreadInput Lib "user32" (ByVal idAttach As Long, ByVal idAttachTo As Long, ByVal fAttach As Long) As Long
Declare Function GetForegroundWindow Lib "user32" () As Long
  1. 修改按钮点击事件代码:
Private Sub Comando2_Click()
    Dim objWord As Word.Application
    Dim doc As Word.Document
    Dim accesshwnd As Long
    Dim currentThreadId As Long
    Dim foregroundThreadId As Long

    accesshwnd = Application.hWndAccessApp

    Set objWord = CreateObject("Word.Application")
    With objWord
        Set doc = .Documents.Add
        .Selection.Text = Me.Texto0
        .Visible = True
        .Dialogs(wdDialogToolsSpellingAndGrammar).Show
        
        If Len(.Selection.Text) <> 1 Then
            Me.Texto0 = .Selection.Text
        End If
        
        doc.Close wdDoNotSaveChanges
        .Quit
    End With
    Set objWord = Nothing

    ' 获取当前Access线程ID和前台窗口线程ID
    currentThreadId = GetWindowThreadProcessId(accesshwnd, 0)
    foregroundThreadId = GetWindowThreadProcessId(GetForegroundWindow(), 0)
    
    ' 绑定线程输入,获取激活权限
    AttachThreadInput foregroundThreadId, currentThreadId, True
    ' 激活Access窗口
    SetForegroundWindow accesshwnd
    ' 取消线程绑定
    AttachThreadInput foregroundThreadId, currentThreadId, False
End Sub

关键修改说明

  • 移除无效的AppActivate和GetCurrentProcessId:原代码用进程ID激活窗口的方式不可靠,换成窗口句柄结合API的方案。
  • AttachThreadInput函数:将Access线程与当前前台窗口线程绑定,让Access线程获得激活窗口的权限,这是绕过Windows激活限制的核心操作。
  • 清理冗余代码:删掉不必要的VBA.AppActivate (docum)和.Visible = False,避免干扰窗口状态。

内容的提问来源于stack exchange,提问作者Luisja

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 20:57:29