Vba 在不压缩的情况下退出MS Access,即使;“自动压缩”;设定

Vba 在不压缩的情况下退出MS Access,即使;“自动压缩”;设定,vba,ms-access,Vba,Ms Access,我们有许多带有“自动压缩”选项集的MS Access文件。 我想使用VBA打开一个文件并关闭它(或退出),而无需经历漫长的压缩过程。然而,我不想触及“自动压缩”选项,因为它需要对普通用户保持真实 是否可以使用VBA关闭文件并跳过压缩?您始终可以在关闭时禁用自动压缩并使用标记系统。创建一个通用标志,allowCompact为布尔值,并根据用户权限将标志设置为True,在窗体(可能是隐藏窗体)或始终保持打开的窗体的Close方法上,您可以检查是否设置了压缩标志,如果是,则使用代码()执行压缩,否则退

我们有许多带有“自动压缩”选项集的MS Access文件。 我想使用VBA打开一个文件并关闭它(或退出),而无需经历漫长的压缩过程。然而,我不想触及“自动压缩”选项,因为它需要对普通用户保持真实


是否可以使用VBA关闭文件并跳过压缩?

您始终可以在关闭时禁用自动压缩并使用标记系统。创建一个通用标志,allowCompact为布尔值,并根据用户权限将标志设置为True,在窗体(可能是隐藏窗体)或始终保持打开的窗体的Close方法上,您可以检查是否设置了压缩标志,如果是,则使用代码()执行压缩,否则退出DB

'In a Standard Module
Public allowCompact

'Code to perform AutoComapct
Public Sub CompactDB()
   CommandBars("Menu Bar"). _
   Controls("Tools"). _
   Controls("Database utilities"). _
   Controls("Compact and repair database..."). _
   accDoDefaultAction
End Sub
然后在首先打开的表单中(可能是登录表单)


希望这有帮助

感谢您建议使用自动打开的隐藏表单。我理解“通用旗”的概念?在Access中实现此功能的最佳方法是什么。作为自定义文档属性?(在Access2010菜单文件-信息-查看和编辑数据库属性-自定义)中)?或者有更好的方法来定义它吗?当我说“Universal Flag”时,我所说的是一个公共变量,正如我在示例编码中提到的。只是在一个标准模块中。这应该没问题。
Private Sub buttonName_Click()
    'Check the users permission
    If Me.permissionLevel <> "Manager" Then
        allowCompact = True
    Else
        allowCompact = False
    End If
End Sub
Private Sub Form_Close(Cancel As Integer)
    If allowCompact Then _
        CompactDB
    Application.Quit
End Sub