Frage

Ich versuche, eine neue Instanz von Excel mit VBA erstellen mit:

Set XlApp = New Excel.Application

Das Problem ist, dass diese neue Instanz von Excel nicht all Add-In, dass die Last nicht geladen werden, wenn ich Excel normalerweise öffne ... Gibt es etwas in dem Excel-Application-Objekt zum Laden in allen vom Benutzer angegebenen addins?

Ich versuche nicht, ein bestimmtes Add-In zu laden, sondern die neue verhalten Excel-Anwendung machen, als ob der Benutzer es themself geöffnet, so dass ich mich wirklich für eine Liste aller Benutzer ausgewählten Add-Ins dass in der Regel laden, wenn Excel geöffnet wird.

War es hilfreich?

Lösung

sah ich in dieses Problem wieder, und die Application.Addins Sammlung scheint, die alle Add-Ins im Extras-> Add-Ins-Menü aufgeführt sehen möchten, mit einem Booleschen Wert besagt, ob ein Addin installiert ist. Also, was für mich zu arbeiten scheint jetzt, ist eine Schleife durch alle Add-Ins und wenn .Installed = true dann setze ich .Installed auf False und zurück auf True, und das scheint richtig meine addins zu laden.

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

Andere Tipps

CreateObject("Excel.Application") verwenden würde das gleiche Ergebnis wie mit New Excel.Application hat, leider.

Sie werden die Add-In laden, die Sie individuell von Dateipfad benötigen & namen der Application.Addins.Add(string fileName) Methode.

Ich verlasse diese Antwort hier für alle anderen, die in dieses Problem lief, aber mit Hilfe von JavaScript.

Ein wenig Hintergrund ... In meiner Firma haben wir eine 3rd-Party-Web-Anwendung, die JavaScript verwendet Excel zu starten und eine Tabelle im laufenden Betrieb zu erzeugen. Wir haben auch eine Excel-Add-in, die das Verhalten der Schaltfläche Speichern außer Kraft setzt. Die Add-In gibt Ihnen die Möglichkeit, die Datei lokal oder in unserem Online-Dokumenten-Management-System zu speichern.

Nachdem wir auf Windows 7 und Office 2010 aktualisiert haben, bemerkten wir ein Problem mit unserer Tabelle erzeugenden Web-App. Wenn JavaScript eine Tabelle in Excel erzeugt, plötzlich auf die Schaltfläche Speichern nicht mehr funktionierte. Sie würden auf Speichern klicken und nichts passiert ist.

Mit den anderen Antworten hier konnte ich eine Lösung in JavaScript konstruieren. Im Wesentlichen würden wir die Excel-Application-Objekt im Speicher erstellen, laden Sie dann ein bestimmtes Add-in unserem Verhalten Speichern-Button zurück. Hier ist eine vereinfachte Version unserer fix:

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

Versuchen:

Set XlApp = CreateObject("Excel.Application")

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top