VBA代码关闭Access数据库而不打开应用程序的Shell

11 database ms-access vba access-vba ms-access-2003

我正在使用Application.Quit它打开MS Access应用程序的shell.

在针对目标应用程序处理调用函数之后,我留下了应用程序的每个实例仍然保持打开状态; 即使特定的数据库实例已关闭.

如何使用VBA以编程方式关闭数据库"shell"应用程序窗口?

以下是如何创建变量以及如何关闭变量的示例:

Dim appAccess As New Access.Application

' Do stuff here...

appAccess.CloseCurrentDatabase
Run Code Online (Sandbox Code Playgroud)

Dan*_*iel 9

根据文档:Application.QuitDoCmd.Quit做同样的事情.亦即

Quit方法退出Microsoft Access.您可以选择以下几个选项之一来保存数据库对象,然后再退出.

您可以尝试使用参数调用其中任何一个acQuitSaveNone或2"退出Microsoft Access而不保存任何对象".经进一步审查,使用Application.QuitDoCmd.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
Run Code Online (Sandbox Code Playgroud)

调用脚本用实际路径替换[vbspath].如果路径有空格,请确保使用双引号并将其放在引号中:

shell "cscript [vbspath]"
Run Code Online (Sandbox Code Playgroud)


Chr*_*cht 6

我总是用DoCmd.Quit acQuitSaveAll.
这至少在Access 2000,2003和2010中是有效的(这是我看到它工作的地方).


Pow*_*ser 5

Access.Quit为我工作。也许试试那个而不是Application.Quit

如果这不能解决它,您的问题可能在其他地方,在这种情况下,请告诉我们更多关于这个项目的信息。


Cur*_*che 5

您需要对实例变量执行 Application.Quit。

例如,

Dim appAccess As New Access.Application

' Do stuff here...

appAccess.Application.Quit
Run Code Online (Sandbox Code Playgroud)