excel ऐडंस लोड करना जब एक्सेल को प्रोग्रामेटिक रूप से इंस्टाल्ट किया जाता है




excel-vba excel-addins (4)

मैं VBA का उपयोग करके Excel का एक नया इंस्टालेशन बनाने का प्रयास कर रहा हूं:

Set XlApp = New Excel.Application

समस्या यह है कि एक्सेल का यह नया उदाहरण जब सामान्य रूप से Excel खोलता है, तब लोड करने वाले सभी एडीशन लोड नहीं होते ... क्या सभी उपयोगकर्ता-निर्दिष्ट एडींस में लोड करने के लिए एक्सेल एप्लीकेशन ऑब्जेक्ट में कुछ भी है?

मैं किसी विशिष्ट ऐड-इन को लोड करने की कोशिश नहीं कर रहा हूं, बल्कि नए एक्सेल एप्लिकेशन को व्यवहार करने की कोशिश करता हूं, जैसे कि उपयोगकर्ता ने इसे स्वयं खोल लिया है, इसलिए मैं वास्तव में सभी उपयोगकर्ता-चयनित ऐड-इन्स की सूची देख रहा हूं जो आम तौर पर लोड होती हैं जब Excel खोलते हैं


प्रयत्न:

Set XlApp = CreateObject("Excel.Application")


मैं इस समस्या को फिर से देखता हूं, और अनुप्रयोग। एडिंस संग्रह में उपकरण-> ऐडिन मेनू में सूचीबद्ध सभी ऐडिनन्स लगते हैं, बुलियन मान बताता है कि एक ऐडिन स्थापित है या नहीं। तो मेरे लिए अब क्या काम करने लगता है कि सभी एडीनेट्स के माध्यम से लूप है और अगर .स्टॉल = सच तो मैं सेट करता हूं। गलत और वापस सत्य पर स्थापित, और यह ठीक से मेरे ऐडिन लोड

Function ReloadXLAddins(TheXLApp As Excel.Application) As Boolean

    Dim CurrAddin As Excel.AddIn

    For Each CurrAddin In TheXLApp.AddIns
        If CurrAddin.Installed Then
            CurrAddin.Installed = False
            CurrAddin.Installed = True
        End If
    Next CurrAddin

End Function

मैं इस प्रश्न को यहाँ छोड़ रहा हूं जो इस समस्या में दौड़ रहा है, लेकिन जावास्क्रिप्ट का उपयोग कर रहा है।

एक छोटी सी पृष्ठभूमि ... मेरी कंपनी में हमारे पास एक तीसरी पार्टी वेब एप है जो एक्सेल लॉन्च करने के लिए जावास्क्रिप्ट का प्रयोग करता है और उड़ने पर स्प्रेडशीट उत्पन्न करता है। हमारे पास एक एक्सेल ऐड-इन भी है जो सेव बटन के व्यवहार को ओवरराइड करता है। ऐड-इन आपको फ़ाइल को स्थानीय स्तर पर या हमारे ऑनलाइन दस्तावेज़ प्रबंधन सिस्टम में सहेजने का विकल्प देता है।

जब हमने विंडोज 7 और ऑफिस 2010 में अपग्रेड कर लिया, तो हमने अपनी स्प्रैडशीट-जनरेटिंग वेब एप के साथ एक समस्या देखी। जब जावास्क्रिप्ट एक्सेल में स्प्रेडशीट जेनरेट करता है, तो अचानक सेव बटन अब काम नहीं करता। आप सहेजने पर क्लिक करेंगे और कुछ नहीं हुआ

अन्य उत्तरों का उपयोग करके मैं जावास्क्रिप्ट में एक समाधान का निर्माण करने में सक्षम था मूलतः हम मेमोरी में एक्सेल एप्लिकेशन ऑब्जेक्ट बनाते हैं, फिर हमारे सहेजे बटन व्यवहार को वापस पाने के लिए एक विशिष्ट ऐड-इन पुनः लोड करें। यहां हमारे फिक्स का एक सरलीकृत संस्करण है:

function GenerateSpreadsheet()
{
    var ExcelApp = getExcel();
    if (ExcelApp == null){ return; }

    reloadAddIn(ExcelApp);

    ExcelApp.WorkBooks.Add;
    ExcelApp.Visible = true;
    sheet = ExcelApp.ActiveSheet;

    var now = new Date();
    ExcelApp.Cells(1,1).value = 'This is an auto-generated spreadsheet, created using Javascript and ActiveX in Internet Explorer';

    ExcelApp.ActiveSheet.Columns("A:IV").EntireColumn.AutoFit; 
    ExcelApp.ActiveSheet.Rows("1:65536").EntireRow.AutoFit;
    ExcelApp.ActiveSheet.Range("A1").Select;

    ExcelApp = null;
}

function getExcel() {
   try {
       return new ActiveXObject("Excel.Application");
   } catch(e) {
       alert("Unable to open Excel. Please check your security settings.");
       return null;
   }
}

function reloadAddIn(ExcelApp) {
    // Fixes problem with save button not working in Excel,
    // by reloading the add-in responsible for the custom save button behavior
    try {
        ExcelApp.AddIns2.Item("AddInName").Installed = false;
        ExcelApp.AddIns2.Item("AddInName").Installed = true;
    } catch (e) { }
}

CreateObject("Excel.Application") का उपयोग करते हुए New Excel.Application का उपयोग करते हुए एक ही परिणाम होता है। New Excel.Application , दुर्भाग्यवश।

आपको ऐडिन लोड करना होगा जो आपको व्यक्तिगत रूप से फ़ाइल पथ और नाम के जरिए Application.Addins.Add(string fileName)Application.Addins.Add(string fileName) विधि





excel-addins