excel excel-vba excel-addins

Cargando complementos cuando Excel se crea una instancia mediante programación



excel-vba excel-addins (4)

Intento crear una nueva instancia de Excel usando VBA usando:

Set XlApp = New Excel.Application

El problema es que esta nueva instancia de Excel no carga todos los complementos que se cargan cuando abro Excel normalmente ... ¿Hay algo en el objeto Aplicación de Excel para cargar en todos los complementos especificados por el usuario?

No estoy tratando de cargar un complemento específico, sino que hago que la nueva aplicación de Excel se comporte como si el usuario la hubiera abierto, así que estoy buscando una lista de todos los complementos seleccionados por el usuario que usualmente cargan al abrir Excel.


Usar CreateObject("Excel.Application") tendría el mismo resultado que usar New Excel.Application , desafortunadamente.

Tendrá que cargar los complementos que necesita individualmente por ruta de archivo y nombre utilizando el método Application.Addins.Add(string fileName) .


Volví a examinar este problema y la colección Application.Addins parece tener todos los complementos enumerados en el menú Herramientas-> Complementos, con un valor booleano que indica si se ha instalado o no un complemento. Entonces, lo que parece funcionar para mí ahora es recorrer todos los complementos y si .Installed = true, configuro .Installed a False y de nuevo a True, y eso parece cargar mis complementos correctamente.

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


Tratar:

Set XlApp = CreateObject("Excel.Application")


Dejaré esta respuesta aquí para cualquier otra persona que se encuentre con este problema, pero usando JavaScript.

Un poco de historia ... En mi compañía tenemos una aplicación web de terceros que usa JavaScript para iniciar Excel y generar una hoja de cálculo sobre la marcha. También tenemos un complemento de Excel que anula el comportamiento del botón Guardar. El complemento le brinda la opción de guardar el archivo localmente o en nuestro sistema de administración de documentos en línea.

Después de actualizar a Windows 7 y Office 2010, notamos un problema con nuestra aplicación web generadora de hojas de cálculo. Cuando JavaScript generaba una hoja de cálculo en Excel, de repente el botón Guardar ya no funcionaba. Haría clic en guardar y no pasó nada.

Usando las otras respuestas aquí pude construir una solución en JavaScript. Básicamente, creamos el objeto de la Aplicación de Excel en la memoria, luego recargamos un complemento específico para recuperar el comportamiento de nuestro botón guardar. Aquí hay una versión simplificada de nuestra solución:

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