Complemento 1 de automatización de funciones definidas por el usuario (UDF) de Excel con instalador integrado, ambos escritos en VB.Net
Solución completa de Microsoft Visual Studio 2022 y código fuente del proyecto.
Se incluyen instaladores para Office/Excel de 32 y 64 bits.
Haga clic en Lanzamientos > Activos para ver ejemplos prediseñados.
Las funciones definidas por el usuario (UDF) de Excel desarrolladas en VB.Net existen desde hace muchos años, y sus primeros ejemplos incluyen:
http://www.cpearson.com/Excel/CreatingNETFunctionLib.aspx
https://www.codeproject.com/Articles/7753/Create-an-Automation-Add-In-for-Excel-using-NET
Si bien estas funciones funcionan bien, su implementación puede ser más problemática, particularmente cuando los usuarios finales no están familiarizados con ellas o no pueden ejecutar utilidades de línea de comandos como Regasm para completar la instalación.
Los objetivos de diseño para este proyecto son, por lo tanto: -
Se requiere una PC con Windows con el siguiente software instalado para construir la solución
Se recomienda una "compilación nueva" de todos los componentes anteriores, en una PC de desarrollo dedicada si es posible, y con todas las actualizaciones aplicadas.
Visual Studio debe tener los siguientes elementos instalados
La siguiente utilidad es útil para inspeccionar el proceso de registro, pero no es obligatoria.
El complemento de automatización se registra durante el proceso de instalación.
Es necesario escribir valores diferentes en el Registro para las versiones de Office de 32 y 64 bits.
La clase de instalador proporciona estos valores, las Propiedades de acción personalizadas se configuran para la versión requerida en cada proyecto de instalador.
Se proporcionan proyectos de instalación de Office independientes de 32 y 64 bits que deben crearse para cada versión requerida.
Visual Studio genera dos archivos de salida, setup.exe
y AUTO_INSTALLER_nn.msi
de cada proyecto del instalador.
Cualquiera de estos archivos puede distribuirse y ejecutarse por parte de los usuarios finales, para instalarlo y desinstalarlo según sea necesario.
Después de ejecutar el instalador, los usuarios deben configurar Excel para habilitar el complemento de automatización.
Desde Excel > Archivo > Opciones > Complementos > Administrar complementos de Excel
Haga clic en Automatización, desplácese hacia abajo y seleccione AUTOMATIZACIÓN.Funciones
Haga clic en Aceptar para confirmar
Se proporcionan dos fórmulas de Excel de muestra.
=IFX()
en una celda de la hoja de trabajo devuelve la cadena de texto AUTO FX OK
=TIMENOW()
en una celda de la hoja de trabajo devuelve la hora actual en milisegundos, por ejemplo, 12:34:56.789
Esta es una función 'volátil' y se volverá a calcular cuando se presione la tecla F9 o cambie otra celda.
Las funciones que ofrece el complemento se pueden enumerar haciendo clic en Fórmulas > Insertar función y seleccionando AUTOMATIZACIÓN. Funciones como categoría
Los usuarios pueden desinstalar el complemento haciendo clic derecho en el botón Inicio de Windows y seleccionando Aplicaciones y características.
Desplácese hacia abajo hasta Automation FX y seleccione Desinstalar
El módulo de clase Installer.vb
realiza el registro de ensamblaje y las actualizaciones del registro necesarias cuando el desarrollador o el usuario final ejecuta el programa instalador .exe o .msi.
La etiqueta <System.ComponentModel.RunInstaller(True)>
la proporciona automáticamente vb.net en el archivo Installer.Designer.vb
cuando se agrega un nuevo módulo de clase Installer a un proyecto.
El programa de instalación utiliza esta etiqueta para llamar Public Overrides Sub Install(stateSaver As IDictionary)
a través de propiedades de acción personalizadas en los proyectos AUTO_INSTALLER_32 y AUTO_INSTALLER_64.
Luego, Sub Install
llama RegisterAssembly
, que es funcionalmente equivalente a ejecutar RegAsm.exe
manualmente.
El propio RegAsm.exe
utiliza métodos expuestos por RegistrationServices 3
Siempre se deben observar los siguientes puntos para evitar realizar actualizaciones conflictivas del Registro durante el desarrollo y las pruebas.
En el proyecto AUTO_FUNCTIONS > Propiedades, las siguientes opciones no deben seleccionarse en ningún momento.
Register for COM Interop
en la sección Compilar Make assembly COM-Visible
en la sección Aplicación > Información de ensamblaje Las etiquetas <ComRegisterFunction>
y <ComUnRegisterFunction>
tampoco deben usarse en ningún módulo.
En cada proyecto > Propiedades de salida principal, el Registro debe establecerse en vsdrpDoNotRegister
Se debe desarrollar una nueva compilación de producción para garantizar que todos los GUID sean únicos y que se incorporen todas las actualizaciones, referencias y dependencias de Visual Studio.
https://support.microsoft.com/en-us/topic/excel-com-add-ins-and-automation-add-ins-91f5ff06-0c9c-b98e-06e9-3657964eec72 ↩
https://learn.microsoft.com/en-us/dotnet/framework/interop/registering-assemblies-with-com ↩
https://learn.microsoft.com/en-us/dotnet/api/system.runtime.interopservices.registrationservices?view=netframework-4.8.1 ↩