Suplemento de automação 1 de funções definidas pelo usuário (UDF) do Excel com instalador integrado, ambos escritos em VB.Net
Solução completa do Microsoft Visual Studio 2022 e código-fonte do projeto.
Instaladores para Office/Excel de 32 e 64 bits incluídos.
Clique em Releases > Assets para exemplos pré-construídos.
As funções definidas pelo usuário (UDFs) do Excel desenvolvidas em VB.Net já existem há muitos anos, cujos primeiros exemplos incluem -
http://www.cpearson.com/Excel/CreatingNETFunctionLib.aspx
https://www.codeproject.com/Articles/7753/Create-an-Automation-Add-In-for-Excel-using-NET
Embora essas funções funcionem bem, sua implantação pode ser mais problemática, especialmente quando os usuários finais não estão familiarizados ou não têm permissão para executar utilitários de linha de comando, como o Regasm, para concluir a instalação.
Os objetivos de design para este projeto são, portanto: -
É necessário um PC Windows com o seguinte software instalado para construir a solução
Recomenda-se uma 'nova versão' de todos os componentes acima, em um PC de desenvolvimento dedicado, se possível, e com todas as atualizações aplicadas.
O Visual Studio deve ter os seguintes itens instalados
O utilitário a seguir é útil para inspecionar o processo de registro, mas não é obrigatório.
O Automation Add-In é registrado durante o processo de instalação.
Valores diferentes precisam ser gravados no Registro para versões de 32 e 64 bits do Office.
A classe do instalador fornece esses valores. Propriedades de ação customizada são configuradas para a versão necessária em cada projeto do instalador.
Projetos separados de instaladores do Office de 32 e 64 bits são fornecidos e devem ser criados para cada versão necessária.
O Visual Studio gera dois arquivos de saída, setup.exe
e AUTO_INSTALLER_nn.msi
de cada projeto do instalador
Qualquer um desses arquivos pode ser distribuído e executado por usuários finais para instalação e desinstalação conforme necessário.
Depois de executar o instalador, os usuários precisam configurar o Excel para habilitar o complemento de automação.
No Excel > Arquivo > Opções > Suplementos > Gerenciar suplementos do Excel
Clique em Automação, role para baixo e selecione AUTOMAÇÃO.Funções
Clique em OK para confirmar
Dois exemplos de fórmulas do Excel são fornecidos
=IFX()
em uma célula da planilha retorna a string de texto AUTO FX OK
=TIMENOW()
em uma célula da planilha retorna a hora atual em milissegundos, por exemplo, 12:34:56.789
Esta é uma função 'Volátil' e irá recalcular quando a tecla F9 for pressionada ou outra célula for alterada.
As funções oferecidas pelo Add-In podem ser listadas clicando em Fórmulas > Inserir Função e selecionando AUTOMAÇÃO.Funções como categoria
Os usuários podem desinstalar o complemento clicando com o botão direito do mouse no botão Iniciar do Windows e selecionando Aplicativos e Recursos
Role para baixo até Automation FX e selecione Desinstalar
O módulo de classe Installer.vb
executa as atualizações de registro e registro do assembly necessárias quando o desenvolvedor ou usuário final executa o programa instalador .exe ou .msi.
A tag <System.ComponentModel.RunInstaller(True)>
é fornecida automaticamente pelo vb.net no arquivo Installer.Designer.vb
quando um novo módulo da classe Installer é adicionado a um projeto.
Esta tag é usada pelo programa instalador para chamar Public Overrides Sub Install(stateSaver As IDictionary)
por meio de Custom Action Properties nos projetos AUTO_INSTALLER_32 e AUTO_INSTALLER_64.
Sub Install
então chama RegisterAssembly
, que é funcionalmente equivalente 2 à execução manual RegAsm.exe
.
O próprio RegAsm.exe
usa métodos expostos pelo RegistrationServices 3
Os pontos a seguir devem sempre ser observados para evitar a realização de atualizações conflitantes no Registro durante o desenvolvimento e teste.
No projeto AUTO_FUNCTIONS > Propriedades, as opções abaixo não devem ser selecionadas em nenhum momento.
Register for COM Interop
na seção Compilar Make assembly COM-Visible
na seção Aplicação > Informações sobre a montagem As tags <ComRegisterFunction>
e <ComUnRegisterFunction>
também não devem ser utilizadas em nenhum módulo.
Em cada projeto > Propriedades de saída primária, Register deve ser definido como vsdrpDoNotRegister
Um novo build de produção deve ser desenvolvido para garantir que todos os GUIDs sejam exclusivos e que todas as atualizações, referências e dependências do Visual Studio sejam incorporadas.
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 ↩