我目前正在使用Application.Quit它打开 MS Access 应用程序的外壳。
在针对目标应用程序处理调用函数之后,我的应用程序的每个实例都保持打开状态;即使特定的数据库实例已关闭。
如何使用 VBA 以编程方式关闭数据库“shell”应用程序窗口?
这是如何创建变量以及如何关闭它的示例:
Dim appAccess As New Access.Application
' Do stuff here...
appAccess.CloseCurrentDatabase
我目前正在使用Application.Quit它打开 MS Access 应用程序的外壳。
在针对目标应用程序处理调用函数之后,我的应用程序的每个实例都保持打开状态;即使特定的数据库实例已关闭。
如何使用 VBA 以编程方式关闭数据库“shell”应用程序窗口?
这是如何创建变量以及如何关闭它的示例:
Dim appAccess As New Access.Application
' Do stuff here...
appAccess.CloseCurrentDatabase
根据文档:Application.Quit与DoCmd.Quit做同样的事情。即
Quit 方法退出 Microsoft Access。在退出之前,您可以选择多个选项之一来保存数据库对象。
您可以尝试使用acQuitSaveNone“退出 Microsoft Access 而不保存任何对象”的参数或 2 调用它们中的任何一个。经过进一步审查,添加了Application.QuitasDoCmd.Quit以实现 Access 95 的向后兼容性(请参阅退出方法的备注,因为它适用于 DoCmd 对象。)如果您有权限,执行其中任何一个操作仍应在关闭时自动压缩,这可能是你炮弹的原因。
如果这对你不起作用,这里有一个有点极端的建议。将其保存为 vbscript 文件,并在真正完成 Access 后调用它。这将终止 Windows pc 上的所有 MSAccess 进程,无需压缩和修复。
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colProcessList = objWMIService.ExecQuery _
("SELECT * FROM Win32_Process WHERE Name = 'msaccess.exe'")
For Each objProcess in colProcessList
objProcess.Terminate()
Next
调用用实际路径替换 [vbspath] 的脚本。如果路径有空格,请确保使用双引号并将其放在引号中:
shell "cscript [vbspath]"
我总是用DoCmd.Quit acQuitSaveAll.
这至少在 Access 2000、2003 和 2010 中有效(这就是我看到它有效的地方)。
您需要针对实例变量执行 Application.Quit。
例如,
Dim appAccess As New Access.Application
' Do stuff here...
appAccess.Application.Quit
Access.Quit为我工作。也许试试那个而不是Application.Quit?
如果这不能解决问题,您的问题可能在其他地方,在这种情况下,请告诉我们更多关于这个项目的信息。
DoCmd.Quit acQuitSaveAll,终于工作了。我之前尝试了所有其他选项,但外壳仍然挂起。
将窗体切换到设计视图。将表单的BorderStyle属性设置为None。在视图菜单上,单击表单视图。请注意,表单的标题栏已完全删除。