如何使用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
相关产品推荐
相关产品推荐

