【发布时间】:2017-01-18 16:24:46
【问题描述】:
是否有人有任何 VBA 来检测您的 Microsoft Access 2013/2016 应用程序是否作为 ACCDE 运行,即是否已编译?
如果发生错误并且 a) 是我在运行它 (environ("username')) 并且它不是 ACCDE,我希望我的代码停止并中断。
有人有什么建议吗?
【问题讨论】:
标签: ms-access vba ms-access-2013 ms-access-2016
是否有人有任何 VBA 来检测您的 Microsoft Access 2013/2016 应用程序是否作为 ACCDE 运行,即是否已编译?
如果发生错误并且 a) 是我在运行它 (environ("username')) 并且它不是 ACCDE,我希望我的代码停止并中断。
有人有什么建议吗?
【问题讨论】:
标签: ms-access vba ms-access-2013 ms-access-2016
改编自https://access-programmers.co.uk/forums/showthread.php?t=229474和http://allenbrowne.com/ser-53.html
Public Function IsACCDE() As Boolean
' Init
IsACCDE = False
' This property exists only in compiled DBs (.mde, .accde)!
' Ignore error (and stay "False") if not.
On Error Resume Next
IsACCDE = (CurrentDb.Properties("MDE") = "T")
End Function
【讨论】:
我使用的是 Access VBA 的一部分:
If IsCompiled = False Then
DoCmd.RunCommand (acCmdCompileAndSaveAllModules)
End If
【讨论】:
IsCompiled 在 .accde 中始终为真,只能在 .accdb 中为假
我找不到任何始终给我正确答案的属性。然后我意识到这些方法都是我真正想知道的近似值。现在直接问是不是acde。
Private Function InDevelopment() As Boolean
On Error Resume Next
InDevelopment = False
InDevelopment = (InStr(CurrentDb.Properties("Name"), "accde") = 0)
End Function
【讨论】: