Excel User-Defined-Functions (UDF)-Automatisierungs-Add-In 1 mit integriertem Installer, beide in VB.Net geschrieben
Vollständige Microsoft Visual Studio 2022-Lösung und Projektquellcode.
Installationsprogramme für 32-Bit- und 64-Bit-Office/Excel enthalten.
Klicken Sie auf Releases > Assets, um vorgefertigte Beispiele anzuzeigen.
Benutzerdefinierte Excel-Funktionen (UDFs), wie sie in VB.Net entwickelt wurden, gibt es schon seit vielen Jahren. Frühe Beispiele hierfür sind:
http://www.cpearson.com/Excel/CreatingNETFunctionLib.aspx
https://www.codeproject.com/Articles/7753/Create-an-Automation-Add-In-for-Excel-using-NET
Obwohl diese Funktionen gut funktionieren, kann ihre Bereitstellung problematischer sein, insbesondere wenn Endbenutzer möglicherweise nicht mit Befehlszeilendienstprogrammen wie Regasm vertraut sind oder diese nicht ausführen dürfen, um die Installation abzuschließen.
Die Entwurfsziele für dieses Projekt sind daher:
Zum Erstellen der Lösung ist ein Windows-PC mit der folgenden installierten Software erforderlich
Wir empfehlen einen „frischen Build“ aller oben genannten Komponenten, wenn möglich auf einem dedizierten Entwicklungs-PC und mit allen installierten Updates.
In Visual Studio sollten die folgenden Elemente installiert sein
Das folgende Dienstprogramm ist nützlich, um den Registrierungsprozess zu überprüfen, aber nicht zwingend erforderlich.
Das Automatisierungs-Add-In wird während des Installationsprozesses registriert.
Für 32-Bit- und 64-Bit-Versionen von Office müssen unterschiedliche Werte in die Registrierung geschrieben werden.
Die Installer-Klasse stellt diese Werte bereit. Benutzerdefinierte Aktionseigenschaften werden für die in jedem Installer-Projekt erforderliche Version festgelegt.
Es werden separate 32-Bit- und 64-Bit-Office-Installationsprojekte bereitgestellt, die für jede erforderliche Version erstellt werden sollten.
Visual Studio generiert aus jedem Installer-Projekt zwei Ausgabedateien, setup.exe
und AUTO_INSTALLER_nn.msi
Jede dieser Dateien kann an Endbenutzer verteilt und von diesen ausgeführt werden, um sie nach Bedarf zu installieren und zu deinstallieren.
Nach der Ausführung des Installationsprogramms müssen Benutzer Excel konfigurieren, um das Automatisierungs-Add-In zu aktivieren.
Über Excel > Datei > Optionen > Add-Ins > Excel-Add-Ins verwalten
Klicken Sie auf Automatisierung, scrollen Sie nach unten und wählen Sie AUTOMATION.Funktionen
Klicken Sie zur Bestätigung auf OK
Es werden zwei Beispiel-Excel-Formeln mitgeliefert
=IFX()
in einer Arbeitsblattzelle gibt die Textzeichenfolge AUTO FX OK
zurück
=TIMENOW()
in einer Arbeitsblattzelle gibt die aktuelle Zeit in Millisekunden zurück, z. B. 12:34:56.789
Dies ist eine „flüchtige“ Funktion und wird neu berechnet, wenn die F9-Taste gedrückt wird oder sich eine andere Zelle ändert.
Die vom Add-In angebotenen Funktionen können aufgelistet werden, indem Sie auf Formeln > Funktion einfügen klicken und AUTOMATION.Funktionen als Kategorie auswählen
Benutzer können das Add-In deinstallieren, indem sie mit der rechten Maustaste auf die Windows-Startschaltfläche klicken und „Apps und Funktionen“ auswählen
Scrollen Sie nach unten zu Automation FX und wählen Sie Deinstallieren
Das Klassenmodul Installer.vb
führt die Assembly-Registrierung und Registrierungsaktualisierungen durch, die erforderlich sind, wenn der Entwickler oder Endbenutzer das .exe- oder .msi-Installationsprogramm ausführt.
Das Tag <System.ComponentModel.RunInstaller(True)>
wird von vb.net automatisch in der Datei Installer.Designer.vb
bereitgestellt, wenn einem Projekt ein neues Installer-Klassenmodul hinzugefügt wird.
Dieses Tag wird vom Installationsprogramm verwendet, um Public Overrides Sub Install(stateSaver As IDictionary)
über benutzerdefinierte Aktionseigenschaften in den Projekten AUTO_INSTALLER_32 und AUTO_INSTALLER_64 aufzurufen.
Sub Install
ruft dann RegisterAssembly
auf, was funktional der manuellen Ausführung RegAsm.exe
entspricht .
RegAsm.exe
selbst verwendet Methoden, die von RegistrationServices 3 bereitgestellt werden
Die folgenden Punkte sollten stets beachtet werden, um die Durchführung widersprüchlicher Registrierungsaktualisierungen während der Entwicklung und beim Testen zu vermeiden.
Im Projekt AUTO_FUNCTIONS > Eigenschaften sollten die folgenden Optionen zu keinem Zeitpunkt ausgewählt werden.
Register for COM Interop
im Abschnitt Kompilieren Make assembly COM-Visible
Die Tags <ComRegisterFunction>
und <ComUnRegisterFunction>
sollten ebenfalls in keinem Modul verwendet werden.
In jedem Projekt > Primäre Ausgabeeigenschaften sollte Register auf vsdrpDoNotRegister gesetzt sein
Es sollte ein neuer Produktions-Build entwickelt werden, um sicherzustellen, dass alle GUIDs eindeutig sind und alle Visual Studio-Updates, Referenzen und Abhängigkeiten integriert sind.
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 ↩