C#.NETとVBAでオートメーションエラー

今回の条件は

  • 開発環境はVisual Studio 2019
  • dll用のプロジェクトは何年も管理し、設定が間違えている説は今更ない
    • ターゲットはx86
    • 「COM相互運用機能の登録」にチェック
    • 「アセンブリに署名する」にチェック
    • 厳密な名前のキーは選択している
  • インストーラー作成環境はInstallShield Limited EditionからMicrosoft Visual Studio Installer Projectsに変更
    • dll用プロジェクトはプライマリ出力、RegisterプロパティはvsdrpCOMへ
    • レジストリをイジる設定はなし

で、Install Shield製を使用したことのあるPC、ないPC、それぞれWindows7~10まで試し済。
開発環境入りの端末でExcelの参照設定を見ると、dllへのパスがおかしい問題はありましたが、それはまた別の機会に語るとして。
開発環境のない一般的なPCで、Excel(VBA)からdllを使用しようとすると、コンパイルエラーにはらないけど、実行するとオートメーションエラーになる、なんて現象が起こってました、が今回の話。

説明:オートメーション エラーです。
指定されたファイルが見つかりません。 
エラーコード:-2147024894

まず解決策から

RegAsmを叩く。
しかも、一度/unregisterで解除してから、/codebaseをつけて叩く、の順番が大事っぽい。

C:\Windows\Microsoft.NET\Framework\v4.0.30319\RegAsm.exe dllへのパス /unregister
C:\Windows\Microsoft.NET\Framework\v4.0.30319\RegAsm.exe dllへのパス /codebase

今回の原因

OSセットアップでユーザをつくる→Administratorを有効にする→作ったユーザは削除する。
この環境だと、Install Shield製ならちゃんと動き、Visual Studio Installer Projects製なら実行時にオートメーションエラーになる、なんてオチなもよう。

こうなると、SYSWOW64フォルダやExcelインストールフォルダにdllを置いても解消しない。
RegAsmで/codebaseをつけようが、/tlbをつけようが効果はない。
あくまで、解除して再登録、が大事っぽい。

なんでや。


他にもニッチなIT関連要素をまとめていますので、よければ一覧記事もご覧ください。

返信を残す

メールアドレスが公開されることはありません。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)