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

如何使用VBA代码打开外部Access数据库并实现窗口正常最大化显示

Access打开第二个数据库无法最大化解决方案

核心修改说明

原代码失效的核心原因是最大化命令没有正确作用到新创建的Access实例,且新实例未被主动激活,仅在任务栏闪烁。修改后的代码直接操作新实例的窗口状态属性,主动激活窗口,保证正常显示。

修正后完整VBA代码

Public Function OpenDb(sDb As String)
    On Error GoTo Error_Handler
   
    Dim oAccess               As Access.Application
   
    Set oAccess = CreateObject("Access.Application")
    With oAccess
        .OpenCurrentDatabase sDb
        ' 直接设置新实例窗口状态为最大化,比RunCommand命令更稳定
        .WindowState = acMax ' 若提示常量未定义,替换为数值1即可
        .Visible = True
        .UserControl = True
        ' 主动激活新实例窗口,前置到屏幕最上层
        .Activate
            
        .DoCmd.OpenForm "mainform" ' 不需要打开表单可删除此行
        ' 兜底执行最大化命令,适配低版本Access
        .RunCommand acCmdAppMaximize
     
   End With
 
Error_Handler_Exit:
    On Error Resume Next
    If Not oAccess Is Nothing Then Set oAccess = Nothing
    Exit Function
 
Error_Handler:
    MsgBox "The following error has occurred" & vbCrLf & vbCrLf & _
           "Error Number: " & Err.Number & vbCrLf & _
           "Error Source: OpenDb" & vbCrLf & _
           "Error Description: " & Err.Description & _
           Switch(Erl = 0, "", Erl <> 0, vbCrLf & "Line No: " & Erl) _
           , vbOKOnly + vbCritical, "An Error has Occurred!"
    Resume Error_Handler_Exit
End Function

注意事项

  • 如果你的database2.mdb中没有名为mainform的表单,请删除.DoCmd.OpenForm "mainform"行,或者替换为你实际需要打开的表单名称
  • 调用代码无需修改,仍使用Call OpenDb("D:\\database2.mdb")即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 23:39:00