Domanda

Sto cercando di creare una nuova istanza di Excel utilizzando VBA utilizzando:

Imposta XlApp = New Excel.Application

Il problema è che questa nuova istanza di Excel non carica tutti i componenti aggiuntivi che si caricano quando apro Excel normalmente ... C'è qualcosa nell'oggetto Applicazione Excel da caricare in tutti i componenti aggiuntivi specificati dall'utente?

Non sto provando a caricare un componente aggiuntivo specifico, ma piuttosto faccio in modo che la nuova applicazione Excel si comporti come se l'utente lo aprisse, quindi sto davvero cercando un elenco di tutti i componenti aggiuntivi selezionati dall'utente che di solito si caricano quando si apre Excel.

È stato utile?

Soluzione

Ho esaminato di nuovo questo problema e la raccolta Application.Addins sembra avere tutti i componenti aggiuntivi elencati nel menu Strumenti- > Componenti aggiuntivi, con un valore booleano che indica se è installato o meno un componente aggiuntivo. Quindi quello che sembra funzionare per me ora è scorrere tutti i componenti aggiuntivi e se .Installed = true allora ho impostato .Installed su False e di nuovo su True, e questo sembra caricare correttamente i miei addin.

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

Altri suggerimenti

L'uso di CreateObject (" Excel.Application ") avrebbe lo stesso risultato dell'utilizzo di New Excel.Application , sfortunatamente.

Dovrai caricare i componenti aggiuntivi di cui hai bisogno individualmente per percorso del file & amp; nome usando il metodo Application.Addins.Add (string fileName) .

Lascio questa risposta qui per chiunque abbia riscontrato questo problema, ma utilizzando JavaScript.

Un po 'di storia ... Nella mia azienda abbiamo un'app Web di terze parti che utilizza JavaScript per avviare Excel e generare un foglio di calcolo al volo. Abbiamo anche un componente aggiuntivo di Excel che sovrascrive il comportamento del pulsante Salva. Il componente aggiuntivo ti dà la possibilità di salvare il file localmente o nel nostro sistema di gestione dei documenti online.

Dopo l'aggiornamento a Windows 7 e Office 2010, abbiamo notato un problema con la nostra app Web per la generazione di fogli di calcolo. Quando JavaScript ha generato un foglio di calcolo in Excel, improvvisamente il pulsante Salva non ha più funzionato. Fare clic su Salva e non è successo nulla.

Usando le altre risposte qui sono stato in grado di costruire una soluzione in JavaScript. In sostanza, dovremmo creare l'oggetto Applicazione Excel in memoria, quindi ricaricare un componente aggiuntivo specifico per ripristinare il comportamento del pulsante di salvataggio. Ecco una versione semplificata della nostra correzione:

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) { }
}

Prova:

Imposta XlApp = CreateObject (" Excel.Application ")

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top