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
प्रत्येक स्थिति के लिए सही परीक्षण स्थिति होगी। लेकिन मुझे उम्मीद है कि यह उत्तर आपको बनाने के लिए कुछ उपयोगी बनाता है।
मैंने 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
फ़ाइल नाम का उपयोग करना: किसी भी तरह से, यह
objVBProject.FileName
औरCurrentDb.Name
दोनों "आत्म समायोजित" और अभी भी एक दूसरे से मेल खाते हैं लगता है। होशियार। ++ – RubberDuckएक्सेस फ़ाइल किसी रिश्तेदार पथ पर है तो यह सही नहीं होगा। 'CurrentDb.Name' मैप किए गए ड्राइव के लिए ड्राइव अक्षर का उपयोग करेगा लेकिन' VBProject.FileName' नेटवर्क पथ वापस कर देगा। – cheezsteak
@cheezsteak यह सुनिश्चित नहीं है कि आप सापेक्ष पथ से क्या मतलब रखते हैं। क्या आप जवाब में जोड़े गए परीक्षण मामलों से कुछ अलग बात कर रहे हैं? – HansUp