インストーラーが統合された Excel ユーザー定義関数 (UDF) オートメーション アドイン1 (どちらも VB.Net で書かれています)
完全な Microsoft Visual Studio 2022 ソリューションとプロジェクトのソース コード。
32 ビットと 64 ビットの両方の Office/Excel のインストーラーが含まれています。
事前に構築されたサンプルについては、「リリース」 > 「アセット」をクリックします。
VB.Net で開発された Excel ユーザー定義関数 (UDF) は長年にわたって存在しており、初期の例には次のようなものがあります。
http://www.cpearson.com/Excel/CreatingNETFunctionLib.aspx
https://www.codeproject.com/Articles/7753/Create-an-Automation-Add-In-for-Excel-using-NET
これらの機能はうまく機能しますが、特にエンド ユーザーが慣れていない場合、またはインストールを完了するために Regasm などのコマンド ライン ユーティリティを実行することが許可されている場合、その展開はより問題になる可能性があります。
したがって、このプロジェクトの設計目標は次のとおりです。
ソリューションを構築するには、次のソフトウェアがインストールされた Windows PC が必要です
可能であれば専用の開発 PC 上で、すべてのアップデートを適用して、上記のすべてのコンポーネントの「新規ビルド」を行うことをお勧めします。
Visual Studio には次のアイテムがインストールされている必要があります
次のユーティリティは登録プロセスを検査するのに役立ちますが、必須ではありません。
オートメーション アドインは、インストール プロセス中に登録されます。
Office の 32 ビット バージョンと 64 ビット バージョンでは、異なる値をレジストリに書き込む必要があります。
インストーラー クラスはこれらの値を提供し、カスタム アクション プロパティは各インストーラー プロジェクトで必要なバージョンに設定されます。
32 ビットと 64 ビットの Office インストーラー プロジェクトが個別に提供されており、必要なバージョンごとにビルドする必要があります。
Visual Studio は、各インストーラー プロジェクトから 2 つの出力ファイルsetup.exeとAUTO_INSTALLER_nn.msiを生成します。
これらのファイルはどちらもエンド ユーザーに配布して実行し、必要に応じてインストールおよびアンインストールできます。
インストーラーを実行した後、ユーザーはオートメーション アドインを有効にするように Excel を構成する必要があります。
[Excel] > [ファイル] > [オプション] > [アドイン] > [Excel アドインの管理] から
[オートメーション] をクリックし、下にスクロールして [オートメーション] を選択します。関数
「OK」をクリックして確認します
2 つのサンプル Excel 式が提供されています
ワークシート セルの=IFX()は、テキスト文字列AUTO FX OKを返します。
ワークシートのセル内の=TIMENOW()は、現在時刻をミリ秒単位で返します (例: 12:34:56.789 )。
これは「揮発性」関数であり、F9 キーが押されるか、別のセルが変更されると再計算されます。
アドインによって提供される関数を一覧表示するには、[数式] > [関数の挿入] をクリックし、カテゴリとして AUTOMATION.Functions を選択します。
ユーザーは、Windows の [スタート] ボタンを右クリックし、[アプリと機能] を選択することでアドインをアンインストールできます。
「Automation FX」まで下にスクロールし、「アンインストール」を選択します
クラス モジュールInstaller.vb開発者またはエンド ユーザーがインストーラー .exe または .msi プログラムを実行するときに必要なアセンブリ登録とレジストリの更新を実行します。
新しいインストーラー クラス モジュールがプロジェクトに追加されると、タグ<System.ComponentModel.RunInstaller(True)>が vb.net によってファイルInstaller.Designer.vbに自動的に提供されます。
このタグは、プロジェクト AUTO_INSTALLER_32 および AUTO_INSTALLER_64 のカスタム アクション プロパティを介してPublic Overrides Sub Install(stateSaver As IDictionary)を呼び出すためにインストーラー プログラムによって使用されます。
次に、Sub Install RegisterAssemblyを呼び出します。これは、 RegAsm.exe手動で実行するのと機能的に同等です。
RegAsm.exe自体は、RegistrationServices 3によって公開されたメソッドを使用します。
開発およびテスト中に競合するレジストリ更新を実行しないように、次の点に常に従う必要があります。
プロジェクトの AUTO_FUNCTIONS > プロパティでは、以下のオプションは常に選択しないでください。
Register for COM Interop 。 Make assembly COM-Visibleタグ<ComRegisterFunction>および<ComUnRegisterFunction>もモジュール内で使用しないでください。
各プロジェクト > [プライマリ出力プロパティ] で、[レジスタ] をvsdrpDoNotRegisterに設定する必要があります。
すべての GUID が一意であり、すべての 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 ↩