che*_*eak 7 ms-access vba access-vba vbe
给定MS Access VBA中的数据库对象,如何获取该数据库的VBProject?
Function GetVBProject(ByVal db As Database) As VBProject
Set GetVBProject = ???
End Function
Run Code Online (Sandbox Code Playgroud)
我知道如何在Access中获取VBProjects的唯一方法就是通过Application.VBE.VBProjects.Item(???).但是,我不知道项目的顺序是什么,名称是什么.我只会知道它的父数据库.Excel中的等价物很简单
Function GetVBProject(ByVal wb As Workbook) As VBProject
Set GetVBProject = wb.VBProject
End Function
Run Code Online (Sandbox Code Playgroud)
查看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
Run Code Online (Sandbox Code Playgroud)
该函数返回项目名称.您可以使用该名称来设置VBProject对象的引用.或者您可以修改函数以返回VBProject而不是字符串.
我几乎没有测试过这个,所以我不确定objVBProject.FileName = CurrentDb.Name是否适合每种情况都是正确的测试条件.但我希望这个答案能为你提供一些有用的东西.
我看着objVBProject.FileName与CurrentDb.NameDB时,从一个驱动器号和UNC路径到网络共享打开.无论哪种方式,似乎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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2487 次 |
| 最近记录: |