2014-12-23 2 views
6

मेरे कार्यपुस्तिका निम्नलिखित खुला घटना है:ThisWorkbook.ChangeFileAccess xlReadWrite VBA विंडो में कार्यपुस्तिका के लिए एकाधिक VBAProjects बनाता

Private Sub Workbook_Open() 
    ThisWorkbook.ChangeFileAccess xlReadOnly 
End Sub 

और फिर इस बटन:

Sub UnlockDeveloper() 
Dim pwd As String 

pwd = InputBox("Enter developer password:", "Password") 

If pwd = "password" Then 
    If ThisWorkbook.ReadOnly = True Then 
     ThisWorkbook.ChangeFileAccess xlReadWrite 
    End If 
Else 
    MsgBox ("Incorrect password.") 
End If 

End Sub 

यह सब काम करता है ठीक है, आमतौर पर है, लेकिन कभी-कभी अनलॉक डेवलपर उप चल रहा है VBAProject VBA विंडो में दो बार दिखाई देने का कारण बनता है, और मेरे पास यह जानने का कोई तरीका नहीं है कि वास्तविक फ़ाइल कौन सा है। यदि मैं गलत में परिवर्तन करता हूं जैसे ही मैं एक्सेल बंद करता हूं तो परिवर्तन खो जाते हैं।

screenshot

किसी को भी किसी भी विचार कैसे इसे रोकने के लिए मिल गया?

+1

बहुत ही रोचक सवाल, मुझे याद आया कि कुछ साल पहले डिक्स ब्लॉग पर कुछ ऐसा ही देखा गया था, [यह] (http://dailydoseofexcel.com/archives/2004/12/11/google-desktop/) जो इसे स्पष्ट करता है समस्या के लिए कई कारण हैं, और कुछ मामलों में काम करने वाले कामकाज। – brettdj

+2

ऐसा क्यों होता है, एमएसडीएन वेबसाइट पर एक स्पष्टीकरण है (http://msdn.microsoft.com/en-us/library/office/ff193344%28v=office.15%29.aspx)। मुझे प्रत्यक्ष समाधान नहीं मिला लेकिन मुझे लगता है कि [केवल पढ़ने के मोड की अंतर्निहित कार्यक्षमता] (http://www.excel-easy.com/examples/read-only-workbook.html) उपयोगी हो सकता है? – Ioannis

+0

क्या [यह] (http://www.k2e.com/tech-update/tips/728-tips-adding-a-password-to-make-an-excel-workbook-read-only) आपके कोडिंग अप्रचलित बनाते हैं ? – OldUgly

उत्तर

1

वीबीई कभी-कभी वीबीई में "भूत परियोजनाएं" रखेगा, भले ही मेजबान दस्तावेज़ बंद हो। इस उदाहरण में, ChangeFileAccess विधि कार्यपुस्तिका को बंद कर रही है (और इसके लिए एक भूत परियोजना छोड़ रही है), और फिर वास्तविक प्रोजेक्ट के साथ कार्यपुस्तिका का एक नया उदाहरण खोल रहा है, लेकिन जैसा कि आप देखते हैं, भूत के बीच अंतर करना मुश्किल है और असली परियोजना।

तो, अंतर्निहित समस्या भूत परियोजनाओं की दृढ़ता है।

Ghost projects आम तौर पर किसी प्रोजेक्ट के संदर्भ को बनाए रखने वाले ऐड-इन के कारण होते हैं। होस्ट एप्लिकेशन (एक्सेल) होस्ट दस्तावेज़ को बंद कर देता है, और परियोजना को हटाने के लिए वीबीई से पूछता है, लेकिन वीबीई देखता है कि अभी भी परियोजना के संदर्भ में कुछ है, और इसलिए परियोजना को अनलोड नहीं किया जाता है।

मेरे अनुभव में, आमतौर पर यह एक COM addin है जो गलत तरीके से प्रोजेक्ट (ओं) का संदर्भ रखता है। जब तक समस्या अब पुन: उत्पन्न नहीं होती है, तब तक आप COM एड-इन्स को एक-एक करके अक्षम करके अपराधी की पहचान कर सकते हैं। फिर उन ऐड-इन्स को पुनः सक्षम करें जो समस्या का कारण नहीं बनते हैं। आपको VBE के लिए Excel और के लिए ऐड-इन्स की जांच करने की आवश्यकता हो सकती है।

मेरे पीसी पर, अपराधी हमेशा पावर क्वेरी ऐड-इन रहा है, और एड-इन (और एक्सेल को पुनरारंभ करने) को अक्षम करने से हमेशा समस्या ठीक हो गई है, लेकिन वाईएमएमवी।

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