Shujima Blog

Apple製品,技術系の話をするブログ

C#で書いたライブラリをExcel VBAから使用する(COMコンポーネント)

メモ書きで品質の低い記事ですが,日本語の情報がまったく見つからなかったので,とりあえずエラーの対処法だけ公開しておきます.

やりたいこと

C#で書かれた.NET Frame workのライブラリをExcel VBAから呼び出したい.

環境

  • Windows 10 Pro 1909 18363.628
  • Excel 2013 (15.0.5111.1000) MSO (15.0.5111.1000) 64ビット
  • Visual Studio Express 2017 for Windows Desktop
  • PCにインストールされている.NET Framework 4.8.03752
  • プロジェクトで設定したターゲットフレームワーク : .NET Framework 4.6.1

やってみたこと

COMコンポーネントを使用するのがいいらしい.

おもにこちらのサイトなどを参考にしたが...

www.atmarkit.co.jp

blog.livedoor.jp

qiita.com

全てうまく動かなかった...

エラーと解決策

コンポーネントが正しく登録されていません

f:id:masa_flyu:20200510163442p:plain ヘルプを開くと「ActiveX コンポーネントが正しく登録されていません(エラー336)」と出てくる

解決策

↓ 以下の「コメント欄」に解答があった

csharphelper.com

f:id:masa_flyu:20200510163638p:plain

プラットフォームターゲットが標準だと「Any CPU」になっている.

64bit版のOfficeではこれを「x64」にしないと動かない

アセンブリ ""を登録できません -アクセスが拒否されました.

1回目はうまくいったのに,2回目以降なぜかビルドが通らなくなる.

解決策

原因はシンプルで,作ったdllを参照しているプログラムがいると,新しいファイルを上書きできない.

Excelを閉じるか,Excelの参照設定から作ったdllのチェックを外すとOK.

編集予定

今作っているプログラムは直接ブログに載せられないもののため,コードや画像をあげられずわかりにくい記事になってしまっています.

申し訳ないです.

作業時間が取れるときにまた更新しようと思っています.

もし更新されていなければコメントとかで催促していただけるとするかもしれません.

当ブログをご利用いただく際には免責事項をお読みください。