this answer के अलावा, जो इस तरह के मुद्दे को हल करने के लिए बुलेट प्रूफ समाधान है, लेकिन जो कार्यान्वित करने के लिए काफी जटिल है, आप अपना वीबीए एप्लिकेशन शुरू होने पर निष्पादित होने के लिए कुछ कोड भी लिख सकते हैं, 'संदर्भों की जांच कर सकते हैं 'एप्लिकेशन' ऑब्जेक्ट का संग्रह। फिर आप अनुरोध कर सकते हैं (1) अगर अनुरोध की गई फाइलें (डीएलएल, ओसीएक्स, टीएलबी) कंप्यूटर पर उपलब्ध हैं और (2) यदि संदर्भ बनाया जा सकता है (application.references.addFromFile ...)।
सावधान: वस्तु घोषणाओं, जैसे कि 'संदर्भ निर्भर' हो सकता है:
Dim cat as ADOX.catalog
अगर संदर्भ सक्रिय जब इसी मॉड्यूल 'संकलित' नहीं है एक संकलन बग को बढ़ा देंगे। मैं फिर आपको स्टार्टअप मॉड्यूल ('autoexec' के समतुल्य) में अपनी 'संदर्भ जांच प्रक्रिया' को अलग करने की सलाह देता हूं जो केवल वीबीए और मूल अनुप्रयोग वस्तुओं से संबंधित है। इसे अपनी सहायता फ़ाइलों से जांचें (उदाहरण: एक्सेस में, डिफ़ॉल्ट संदर्भ जिन्हें बाहरी संदर्भों के बिना उपयोग किया जा सकता है वे हैं वीबीए, एक्सेस और डीएओ)।
संपादित करें:
मामले में बाहरी संदर्भ अन्य सॉफ्टवेयर पैकेज और (1) एक MSI फ़ाइल या के साथ वितरित नहीं किया जा सकता पर निर्भर करते हैं (2) एक से अधिक संस्करण हो सकता है, मुझे लगता है कि 'references.addFromFile' ही है समाधान जो लागू कर सकते हैं। उदाहरण:
- आपको लगता है कि पद (msword.olb फ़ाइल) का उल्लेख करने की जरूरत है एक VBA/पहुँच क्रम ग्राहक एप्लिकेशन है।
- लाइसेंस के मुद्दों के लिए, आप स्वतंत्र रूप से अपने MSI पैक
- के साथ इस फ़ाइल को वितरित नहीं कर सकते OLB फ़ाइल या तो 'XP संस्करण या किसी नए
हमारे समाधान हो सकता है ग्राहक पर 2 टेबल के लिए किया जाता है फ़ाइल एक्सेस करें। एक उन सभी संदर्भों को सूचीबद्ध करता है जिन्हें स्टार्टअप समय पर चेक या जोड़ा जाना है (शब्द उनमें से एक होगा), और दूसरा फ़ाइल के सभी संभावित स्थानों को सूचीबद्ध करता है (इस पर निर्भर करता है कि उपयोगकर्ता के पास 'office11' संस्करण या नया है एक), 2 टेबल के बीच कई संबंधों के साथ।
तो, सबसे अच्छी रणनीति कोड के माध्यम से MSI पैक और प्रबंधन के बीच एक मिश्रण हो सकता है:
- MSI स्वतंत्र dll के या इस तरह के activeX के रूप में अन्य फ़ाइलों कि पूरी तरह से कर रहे हैं अपने अनुप्रयोग में 'एम्बेडेड', वितरण के लिए अच्छा है नियंत्रण (जैसे स्कैनर नियंत्रण, रिपोर्ट या फ़ाइल दर्शक, आदि)
- कोड सबसे अच्छा समाधान है जहां आपके ऐप को अन्य एप्लिकेशन (शब्द, एक्सेल, दृष्टिकोण, आदि) के साथ संवाद करना होगा जो आपके उपयोगकर्ता की मशीनों पर विभिन्न संस्करणों में मौजूद हो सकते हैं ।
स्रोत
2009-01-06 21:20:11
अपने संदर्भ निर्भर रह सकते हैं के अलावा अन्य सॉफ्टवेयर से जुड़े होते हैं, तो विभिन्न संस्करणों में मौजूद है (उदाहरण के लिए एक्सेल 2003 या एक्सेल 2007), इंस्टॉलर समाधान अपेक्षित परिणाम नहीं देगा। –