4
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Excel-DNAで、アドインを作成しセットアップする

Last updated at Posted at 2023-09-26

20230922fig1.png

を公開しました。
Excel-DNAを利用しました。Excelアドインを慣れたC#で作成できるので、とてもいいです。VBAだと遅いですが.NETなので速いし、開発環境はVisual Studioを使えるし、素晴らしいです。

郵便番号から住所へ変換する本体のプログラムはさほど難しくはなかったのですが、Excel-DNAのWiXInstallerで作成するアドインセットアップに難儀した部分がありました。

Microsoft Visual C++ Runtime Library エラー

(2023-12-14追記) Excel-DNA Ver1.7以降から、下記現象は解決したようです。つまり、<ExcelDnaUnpack>true</ExcelDnaUnpack>で、分割する必要はありません。.xllファイルのみ配置すればOKです。

20230925fig1.png

アドインをインストール後、Excelを起動した時に、Microsoft Visual C++ Runtime Library Assertion failed!が、次の環境で発生しました。
Windows 10 Home(64bit), Excel 32bit

開発環境のPCでは問題ありません。

最新の、Microsoft Visual C++ 再頒布可能パッケージでは解決できませんでした。

.NET 6.0 add-in load failureによれば、ProjectのPropertyGroupに次を設定すると良いです。

<ExcelDnaUnpack>true</ExcelDnaUnpack>

すると、
bin\Release\net6.0-windows\publish

  • ExcelDna.Integration.dll
  • ExcelDna.Loader.dll
  • ExcelDna.ManagedHost.dll

が配置されます。
これらを、アドインのフォルダに最初からセットアップ時に配置しておくことで、Visual C++ランタイムエラーを回避できました。

エラーになる理由は、Excel-DNAが作成するファイル(.xllファイルか?)を、Excel起動時・アドインをロードする時に解凍するのですが、それをアンチウイルスソフトが誤検知するからだそうです。
ですので、最初からファイルをばらばらにしておいてアドインのフォルダに配置しておけば良いようです。

.NET 6.0で作成したアドインのセットアップ

(2023-12-14追記) Excel-DNA Ver1.7以降から、publishフォルダに作成された、.xllファイルのみ配置すればOKです。

Excel-DNAのWiXInstallerのテンプレートで作成すると、アドインは、

C:\Users\<ユーザー名>\AppData\Roaming\HOGE\FUGA

に配置されます。
ただし、.NET 6のアドインの場合、.xllファイルを配置するだけでは起動しません。

  • HOGE-AddIn64.dna
  • ExcelDna.IntelliSense.dll

といったような幾つかのファイルも、アドインフォルダに配置する必要があります。
しかも、ファイルをレジストリに登録しつつインストールしないといけないようです。
WiX4の、Product.wxsファイルで、例えば次のようにコードを追加します。

<Component Directory='AddinFolder' Guid='ここにGUIDを設定'>
   <RegistryValue Root="HKCU" Key="Software\!(loc.ProductManufacturer)\!(loc.ProductNameNoSpace)" Name="IntelliSense" Value="AddIns" KeyPath="yes" Type="string" />
   <File Source='..\FUGA\bin\Release\net6.0-windows\ExcelDna.IntelliSense.dll' />
</Component>

WiX4についてもある程度知識が必要になります。ですので、Windows インストーラーでインストールする必要が無いのでしたら、ユーザーに手動でアドインをインストールしてもらうなり、他の方法も良いでしょう。
参照:Installing Your Add-in

ユニットテスト

私はまだ試していませんが、Excel-DNA Testing Helperが利用できます。
通常の、xunitのプロジェクトでは、動きませんでした。

確認環境

  • ExcelDna.AddIn 1.7.0-rc6
  • ExcelDna.IntelliSense 1.7.0-rc6
4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?