我有一个Access 2016应用程序,可以分发给许多不熟练的用户。他们通常必须安装MS Runtime for Access。尽管方向明确,但仍有太多用户仍然发现应用程序无法打开。看起来早期绑定的对象不存在于系统上。绑定对象不存在时,不会加载或运行代码,因此甚至不可能提供良好的错误消息。如何在Access 2016中使用VBA检测对象的存在?
我现在正在尝试编写一个小程序,其中应用程序所需的所有对象都是后期绑定的,因此能够说出哪些模块丢失,如果有的话。我发现的是虽然我知道对象存在,但我的检测方法仍然失败。下面的代码是所需对象的一个测试示例。这个测试总是失败,我不知道为什么。我有大约7个。三个似乎工作正常,但其他人没有。有什么不同的方式我应该编写“CreateObject”?
Private Sub btnOffice_Click()
'Office FileDialog MSO.DLL Microsoft Office 16.0 Object Library
Dim obj As Object
On Error GoTo xyzzy
Set obj = CreateObject("Office.FileDialog")
lblOffice.Caption = "Office module present"
Exit Sub
xyzzy:
lblOffice.Caption = officeWarning
MsgBox Err.Description
End Sub
[error 429](https://msdn.microsoft.com/en-us/library/aa231060(v = vs.60).aspx) – SeanC
“失败”是什么意思 - 错误消息,错误结果,什么都没有发生?查看https://support.office.com/en-us/article/FileDialog-Property-8510B02D-E455-44A9-BF38-3787E6D5C8C1。也许'Set obj = Application.FileDialog(msoFileDialogFilePicker)' – June7
@SeanC我已经在那个列表中。它似乎并不适用。我正在测试的所有对象都存在并在我的主应用程序中工作,它们在早期绑定。为什么在这种情况下CreateObject会失败? – LostInTheTrees