给定MS Access VBA中的数据库对象,如何获得该数据库的VBProject?
Function GetVBProject(ByVal db As Database) As VBProject
Set GetVBProject = ???
End Function
我知道如何在Access中获取VBProjects的唯一方法是通过
Application.VBE.VBProjects.Item(???)
。但是,我不知道项目的顺序和名称。我只会知道它是父数据库。 Excel中的等效项将很简单Function GetVBProject(ByVal wb As Workbook) As VBProject
Set GetVBProject = wb.VBProject
End Function
最佳答案
查看VBProjects
集合,并检查每个项目的FileName
属性。如果项目的FileName
是当前数据库文件(CurrentDb.Name
),则是您要的文件。
Public Function ThisProject() As String
Dim objVBProject As Object
Dim strReturn As String
For Each objVBProject In Application.VBE.VBProjects
If objVBProject.FileName = CurrentDb.Name Then
strReturn = objVBProject.Name
Exit For
End If
Next
ThisProject = strReturn
End Function
该函数返回项目名称。您可以使用该名称设置对
VBProject
对象的引用。或者,您可以修改函数以返回VBProject
而不是字符串。我几乎没有对此进行测试,因此我不确定
objVBProject.FileName = CurrentDb.Name
将是每种情况的正确测试条件。但我希望这个答案能给您一些有益的基础。从驱动器号和网络共享的UNC路径打开数据库时,我调查了
objVBProject.FileName
与CurrentDb.Name
。无论哪种方式,似乎objVBProject.FileName
和CurrentDb.Name
都是“自我调整”的,并且仍然彼此匹配:' db opened from a drive letter ...
? CurrentDb.Name
C:\share\Access\BigDb_secure.mdb
? application.VBE.VBProjects("BigDb_secure").FileName
C:\share\Access\BigDb_secure.mdb
' db opened from UNC path to network share ...
? CurrentDb.Name
\\HP64\share\Access\BigDb_secure.mdb
? application.VBE.VBProjects("BigDb_secure").FileName
\\HP64\share\Access\BigDb_secure.mdb
关于vba - 获取数据库的VBProject,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30874019/