2015-06-16 6 views
5

एमएस एक्सेस वीबीए में डेटाबेस ऑब्जेक्ट को देखते हुए, डेटाबेस को वीबीप्रोजेक्ट कैसे प्राप्त किया जा सकता है?डाटाबेस का वीबीप्रोजेक्ट

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 

उत्तर

4

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 
+0

फ़ाइल नाम का उपयोग करना: किसी भी तरह से, यह objVBProject.FileName और CurrentDb.Name दोनों "आत्म समायोजित" और अभी भी एक दूसरे से मेल खाते हैं लगता है। होशियार। ++ – RubberDuck

+1

एक्सेस फ़ाइल किसी रिश्तेदार पथ पर है तो यह सही नहीं होगा। 'CurrentDb.Name' मैप किए गए ड्राइव के लिए ड्राइव अक्षर का उपयोग करेगा लेकिन' VBProject.FileName' नेटवर्क पथ वापस कर देगा। – cheezsteak

+0

@cheezsteak यह सुनिश्चित नहीं है कि आप सापेक्ष पथ से क्या मतलब रखते हैं। क्या आप जवाब में जोड़े गए परीक्षण मामलों से कुछ अलग बात कर रहे हैं? – HansUp

संबंधित मुद्दे