का उपयोग कर एक्सेल में VBProject.VBComponents में किए गए परिवर्तनों को फ्लश करना, मैं एक्सेल में कुछ अजीब quirks का अनुभव कर रहा है जबकि प्रोग्रामिंग रूप से मॉड्यूल को हटा रहा है और फिर उन्हें फ़ाइलों से reimporting। असल में, मेरे पास वर्जनकंट्रोल नामक एक मॉड्यूल है जो मेरी फ़ाइलों को एक पूर्वनिर्धारित फ़ोल्डर में निर्यात करना है, और मांग पर उन्हें पुनः आयात करना है। जबकि कुछ डुप्लिकेट (जैसे mymodule और mymodule1) है,वीबीए
Dim i As Integer
Dim ModuleName As String
Application.EnableEvents = False
With ThisWorkbook.VBProject
For i = 1 To .VBComponents.Count
If .VBComponents(i).CodeModule.CountOfLines > 0 Then
ModuleName = .VBComponents(i).CodeModule.Name
If ModuleName <> "VersionControl" Then
If PathExists(VersionControlPath & "\" & ModuleName & ".bas") Then
Call .VBComponents.Remove(.VBComponents(ModuleName))
Call .VBComponents.Import(VersionControlPath & "\" & ModuleName & ".bas")
Else
MsgBox VersionControlPath & "\" & ModuleName & ".bas" & " cannot be found. No operation will be attempted for that module."
End If
End If
End If
Next i
End With
इस चलाने के बाद, मैंने देखा है कि कुछ मॉड्यूल अब दिखाई नहीं देते: यह reimporting (समस्या के साथ यह नीचे वर्णित है) के लिए कोड है । कोड के माध्यम से कदम उठाने के दौरान, यह स्पष्ट हो गया कि कुछ मॉड्यूल अभी भी Remove
कॉल के बाद रेंगते हैं, और उन्हें अभी भी परियोजना में रहते हुए पुनः आयात किया जाना है। कभी-कभी, यह परिणामस्वरूप मॉड्यूल को 1
से चिपक गया, लेकिन कभी-कभी मेरे पास मूल और प्रति दोनों ही होते थे।
क्या Remove
और Import
पर कॉल को फ़्लश करने का कोई तरीका है, इसलिए वे स्वयं को लागू करते हैं? यदि अनुप्रयोग ऑब्जेक्ट में कोई है, तो मैं प्रत्येक के बाद Save
फ़ंक्शन को कॉल करने के बारे में सोच रहा हूं, हालांकि आयात के दौरान चीजें गलत होने पर यह नुकसान हो सकती है।
विचार?
संपादित करें: synchronization
से version-control
में टैग बदल दिया गया।
+1 चालाक थोड़ा कुछ घर का बना संस्करण नियंत्रण करने के लिए तरीका है। मुझे ऐसा कुछ करना चाहिए। –
यह इस सवाल से प्रेरित था [http://stackoverflow.com/questions/131605/best-way-to-do-version-control-for-ms-excel) यहां StackOverflow पर - मेरा संस्करण केवल एक मामूली है रीमेक। – CamilB
मैंने इस तरह कुछ भी नहीं बनाया है, लेकिन जो चीजें मैं कोशिश करूँगा वह होगा: किसी अन्य कार्यपुस्तिका/एडिन से कॉल करना; पहले कार्यपुस्तिका का बैक अप लेना, सभी हटाने को एक बार में करना, सहेजना, सभी को एक साथ आयात करना। आप रॉब बोवी के कोड क्लीनर के COM संस्करण के साथ भी गड़बड़ कर सकते हैं। आप इसका संदर्भ सेट कर सकते हैं और आयात, निर्यात और अन्य कार्यों तक पहुंच सकते हैं। मुझे यह देखने में दिलचस्पी होगी कि आपको क्या पता चल रहा है। –