Bak olmalı ve her projenin FileName
özelliğini kontrol ederim. Bir projenin FileName
güncel veritabanı dosyasıysa (CurrentDb.Name
), istediğinizi budur.
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
Bu işlev proje adını döndürür. VBProject
nesnesine başvuru yapmak için adı kullanabilirsiniz. Ya da bir dize yerine VBProject
döndürme işlevini gözden geçirebilirsiniz.
Bunu zorlukla test ettim, bu yüzden belirsiz olduğumdan, her durum için doğru test koşulu olacak objVBProject.FileName = CurrentDb.Name
. Ama umarım bu cevap size üzerinde yararlı bir şeyler sunar.
db bir sürücü harfinden ve bir UNC yolundan bir ağ paylaşımına açıldığında objVBProject.FileName
ve CurrentDb.Name
'a baktım.
' 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
dosya adı kullanıldığında: Her iki şekilde de
objVBProject.FileName
veCurrentDb.Name
hem "kendiliğinden düzelir" ve hala birbirlerine maç gibi görünüyor. Akıllı. ++ – RubberDuckErişim dosyası göreli bir yoldaysa doğru olmaz. 'CurrentDb.Name', eşlenen bir sürücü için sürücü harfini kullanacak, ancak 'VBProject.FileName', ağ yolunu döndürecektir. – cheezsteak
@cheezsteak Göreli yoldan ne kastettiğinizden emin değil misiniz? Cevaplara eklediğim test örneklerinden farklı bir şeyden mi bahsediyorsunuz? – HansUp