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)
根据文档:Application.Quit与DoCmd.Quit做同样的事情.亦即
Quit方法退出Microsoft Access.您可以选择以下几个选项之一来保存数据库对象,然后再退出.
您可以尝试使用参数调用其中任何一个acQuitSaveNone或2"退出Microsoft Access而不保存任何对象".经进一步审查,使用Application.Quit的DoCmd.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)
Access.Quit为我工作。也许试试那个而不是Application.Quit?
如果这不能解决它,您的问题可能在其他地方,在这种情况下,请告诉我们更多关于这个项目的信息。
您需要对实例变量执行 Application.Quit。
例如,
Dim appAccess As New Access.Application
' Do stuff here...
appAccess.Application.Quit
Run Code Online (Sandbox Code Playgroud)