コレクションを見て、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