2009-10-15 11 views
10

खोलकर एक्सेल लॉन्च किया जाता है कई उपयोगकर्ताओं ने सूचित किया है कि यदि वे Excel फ़ाइल को डबल-क्लिक करके एक्सेल लॉन्च करते हैं, तो ऐड-इन लोड नहीं होगा। लेकिन, अगर वे स्टार्ट मेनू (या क्विक लॉन्च टूलबार) के माध्यम से एक्सेल खोलते हैं तो ऐड-इन लोड ठीक है।एक्सेल के लिए COM एड-इन लोड नहीं होता है जब फ़ाइल

कुछ विवरण, मामले में वे मदद:

  • यह एक COM ऐड-इन, VB6 में लिखा है।
  • समस्या Windows XP/Excel 2003 और Vista/Excel 2007 सिस्टम पर रिपोर्ट की गई है।
  • ऐड-इन IDTExtensibility2 लागू करता है।
  • प्रारंभ मोड "स्टार्टअप पर लोड" पर सेट है।

इस कारण पर कोई विचार या समस्या निवारण कैसे किया जाएगा इसकी सराहना की जाएगी।

अद्यतन: मेरा मानना ​​है कि मुझे इस समस्या का समाधान मिला है।

जब कोई IDTExtensibility2 डीएल पंजीकृत होता है, तो यह लोड व्यवहार, ऐड-इन नाम इत्यादि के लिए स्वचालित रूप से HKCU प्रविष्टियां बनाता है लेकिन मेरे पास भी मेरी सेटअप फ़ाइल एचडीएलएम में ऐड-इन पंजीकृत करती है, ताकि यह उपलब्ध हो सके मशीन पर सभी उपयोगकर्ता। इसने सिस्टम पर डबल रजिस्ट्री प्रविष्टियों का कारण बना दिया।

मुझे नहीं लगता था कि यह समस्या का कारण होगा। मैंने मैन्युअल रूप से HKCU प्रविष्टियों को संपादित किया और एक्सेल उन्हें अनदेखा करना और HKLM प्रविष्टियों का पालन करना प्रतीत होता था। हालांकि, मुझे एक और डेवलपर से एक टिप मिली जिसमें यह समझाया गया कि उन्हें एक ही समस्या थी, और उनका समाधान डुप्लिकेट रजिस्ट्री प्रविष्टियों को हटाना था। मैंने कोशिश की और ऐसा लगता है कि बग की रिपोर्ट करने वाले लोगों (बहुत कम संख्या) लोगों के लिए समस्या का समाधान हुआ है।

नीचे दिए गए इनो सेटअप कोड में एचकेएलएम प्रविष्टियां शामिल होंगी, दोबारा जांच करें कि लोड व्यवहार सही है (क्योंकि मैं पागल हूं), फिर HKCU प्रविष्टि को हटा दें। जहां भी आप सभी सीएपीएस देखते हैं वहां अपनी फ़ाइल विशेषताओं को घटाएं।

[Registry] 
Root: HKLM; Subkey: Software\Microsoft\Office\Excel\Addins\CONNECT_CLASS; Flags: uninsdeletekey 
Root: HKLM; Subkey: Software\Microsoft\Office\Excel\Addins\CONNECT_CLASS; ValueType: string; ValueName: FriendlyName; ValueData: ADDIN_NAME 
Root: HKLM; Subkey: Software\Microsoft\Office\Excel\Addins\CONNECT_CLASS; ValueType: string; ValueName: Description; ValueData: ADDIN_DESC 
Root: HKLM; Subkey: Software\Microsoft\Office\Excel\Addins\CONNECT_CLASS; ValueType: dword; ValueName: LoadBehavior; ValueData: 3 
Root: HKLM; Subkey: Software\Microsoft\Office\Excel\Addins\CONNECT_CLASS; ValueType: dword; ValueName: CommandLineSafe; ValueData: 0 


// Set load behavior to on start up 
procedure ResetAddinRegKeys(); 
var 
    bUpdate : Boolean; 
    LoadBehaviorKey : Cardinal; 

begin 
    if RegQueryDWordValue(HKEY_LOCAL_MACHINE, 'SOFTWARE\Microsoft\Office\Excel\Addins\CONNECT_CLASS', 'LoadBehavior', LoadBehaviorKey) then begin 
    if LoadBehaviorKey <> 3 then begin 
     bUpdate := True; 
    end; 
    end else begin 
    bUpdate := True; 
    end; 

    if bUpdate = True then begin 
    RegWriteDWordValue(HKEY_LOCAL_MACHINE, 'SOFTWARE\Microsoft\Office\Excel\Addins\CONNECT_CLASS','LoadBehavior', 3); 
    end; 

    if RegKeyExists(HKEY_CURRENT_USER, 'SOFTWARE\Microsoft\Office\Excel\Addins\CONNECT_CLASS') then begin 
    if RegDeleteKeyIncludingSubkeys(HKEY_CURRENT_USER, 'SOFTWARE\Microsoft\Office\Excel\Addins\CONNECT_CLASS') then begin; 
     //MsgBox('Duplicate keys deleted', mbInformation, MB_OK); 
    end; 
    end; 
end; 

function GetCustomSetupExitCode: Integer; 
begin 
    ResetAddinRegKeys; 
    Result := 0; 
end; 

मेरी MSI इंस्टॉलर के लिए, मैं स्थापना की धारा प्रतिबद्ध है निम्नलिखित VBScript फोन:

Sub RemoveAddinHKCUKeys() 
    On Error Resume Next 
    Dim WshShell 
    Set WshShell = WScript.CreateObject("WScript.Shell") 

    WshShell.RegDelete "HKCU\SOFTWARE\Microsoft\Office\Excel\Addins\CONNECT_CLASS\CommandLineSafe" 
    WshShell.RegDelete "HKCU\SOFTWARE\Microsoft\Office\Excel\Addins\CONNECT_CLASS\Description" 
    WshShell.RegDelete "HKCU\SOFTWARE\Microsoft\Office\Excel\Addins\CONNECT_CLASS\FriendlyName" 
    WshShell.RegDelete "HKCU\SOFTWARE\Microsoft\Office\Excel\Addins\CONNECT_CLASS\LoadBehavior" 
    WshShell.RegDelete "HKCU\SOFTWARE\Microsoft\Office\Excel\Addins\CONNECT_CLASS\" 

    If Err.Number <> 0 The Err.Clear 
End Sub 

उत्तर

3

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

यह आपकी समस्या नहीं प्रतीत होता है लेकिन मैंने सोचा कि आपको कुछ सहानुभूति पसंद आएगी। ;)

क्या आप वीबी 6 में एड-इन डिज़ाइनर का उपयोग कर रहे हैं? मुझे इसके साथ कोई समस्या नहीं है, लेकिन आप इसे एक वर्ग में सीधे IDTExtensibility2 को लागू करने और इसे लागू करने का प्रयास करते हैं और फिर COM एड-इन के रूप में पंजीकृत करने के लिए अपनी रजिस्ट्री प्रविष्टियां लिखते हैं। या फिर यह आप के आसपास डिजाइनर का उपयोग नहीं कर रहे हैं।

कोशिश करने की एक बात यह है कि ऐड-इन को केवल उपयोगकर्ता ऐड-इन के बजाय मशीन-व्यापी ऐड-इन के रूप में पंजीकृत करना है। डिजाइनर के साथ आप केवल उपयोगकर्ता ऐड-इन के रूप में पंजीकरण कर सकते हैं। (हालांकि इसके लिए एक काम है)।

क्या आप इसे पुन: उत्पन्न कर सकते हैं? क्या IDTExtensibility2 विधियों में से कोई भी कॉल हो रहा है?

मुझे लगता है कि यह संभव है कि अन्य ऐड-इन्स हस्तक्षेप कर रहे हों। आप मेरी COM एड-इन उपयोगिता को डाउनलोड करने के लिए डाउनलोड कर सकते हैं कि एड-इन्स लोड किए गए हैं (Office ऐप्स में COM एड-इन्स विंडो केवल आपको उपयोगकर्ता ऐड-इन्स दिखाती हैं, न कि मशीन ऐड-इन्स।)

http://www.amosfivesix.com/download/stackoverflow/

यदि ऐड-इन पूरी तरह लोड हो रहा है, तो Office ऐप ने इसे अक्षम कर दिया होगा। सहायता पर जाएं | के बारे में | अक्षम आइटम और देखें कि यह वहां है या नहीं।

एक्सेल में डीडीई से संबंधित कुछ मूर्ख विकल्प हैं (जो एक्सप्लोरर आमतौर पर अन्य ऐप्स में दस्तावेज़ खोलने के लिए उपयोग करता है।) उपकरण | विकल्प | सामान्य | अन्य अनुप्रयोगों को अनदेखा करें। देखें कि इससे कोई फर्क पड़ता है या नहीं।

यदि आप समस्या को पुन: उत्पन्न नहीं कर सकते हैं, लेकिन आपका ग्राहक कर सकता है, तो आप उनके लिए एक विशेष संस्करण लिख सकते हैं जो आईडीटी लॉग करता है ... घटनाओं को देखने के लिए कि वे क्या हो रहे हैं। उन्हें एक मैक्रो भेजें जो एक्सेल को जांचता है। आवेदन। यह देखने के लिए कि क्या आप ऐड-इन देखते हैं (मुझे पता है कि वर्ड में ऑब्जेक्ट मॉडल है, एक्सेल के बारे में निश्चित नहीं है, तो अगर यह नहीं करता तो मुझे क्षमा करें)।

उम्मीद है कि यह कुछ मदद है।

टॉम

+0

@Tom पर क्लिक करें: आप समस्या यह पता लगाने की जब एक्सेल अन्य आवेदन में एम्बेडेड है का प्रबंधन किया था? मुझे वही समस्या है जहां मेरा COM एडिन (जो एक्सेल में अपनी कमांडबार जोड़ता है) लोड करता है लेकिन अतिरिक्त कमांडबार को ऑनकनेक्शन() विधि को छोड़कर अनुकूलित नहीं किया जा सकता है (बटन सक्षम/अक्षम)। – A9S6

+0

क्षमा करें, नहीं। यह वास्तव में मेरे लिए एक बड़ा सौदा नहीं था। मैं लोगों को यह बताने में सक्षम था "ऐसा मत करो"। ;) या दोनों ऐप्स बंद करें और उन्हें सही क्रम में शुरू करें। मुझे यकीन नहीं है कि आप कुछ भी कर सकते हैं। Office ऐप्स में एक बग की तरह लगता है। प्रतिक्रिया के लिए –

+0

धन्यवाद। आपके पास कुछ महान विचार और टिप्पणियां थीं। – CtrlDot

3

5 में बहुत आसान फ़ाइल के लिए चरण

  1. ओपन एक्सेल
  2. > विकल्प> ऐड-इन्स
  3. जाओ प्रबंधित करने के लिए: तो अक्षम चुनें आइटम फिर पर जाएं
  4. नई विंडो में अपने ऐड-इन्स का पता लगाएं और सक्षम
  5. पुनः प्रारंभ एक्सेल