5
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

C#で作ったアドインをVBAから呼び出そうとした時に困ったこと

Posted at

ExcelのVBAからC#で作成したExcel DNAアドインを呼び出す際に直面する一般的な問題と解決策について、ポイントを簡潔にまとめます。

  1. アドイン関数を呼び出す際、名前空間やクラス名が不要

C#でExcel DNAアドインを作成すると、VBAからはApplication.Runメソッドを使ってアドイン内の関数を呼び出すことができますが、関数を呼び出す際に「名前空間」や「クラス名」を含める必要はありません。C#側ではFunctions.ConnectDBなどと定義していても、呼び出す際は次のように関数名だけを指定します。

Dim result As String
result = Application.Run("ConnectDB", "localhost", "postgres", "username", "password", "5432")
MsgBox result

注意: Application.Runの第1引数には、関数名のみを指定します。Namespace.ClassName.FunctionNameのように指定するとエラーになります。
  1. セキュリティ設定でマクロを有効化する必要がある

VBAからアドインを安全に利用するためには、Excelのセキュリティ設定でマクロを有効にする必要があります。
• ファイル > オプション > セキュリティセンター > セキュリティセンターの設定 > マクロの設定 で「すべてのマクロを有効にする」か、信頼するフォルダ内で実行するよう設定します。
• VBAプロジェクト オブジェクト モデルへの信頼を設定にチェックを入れておくと、アドイン内のVBAプロジェクトにアクセスできるようになります。

  1. .xllファイルをExcelに読み込む方法

C#で作成したExcel DNAアドインは、通常.xllファイルとして生成されます。このファイルをExcelに読み込むには以下の手順を行います。
1. Excel > ファイル > オプション > アドイン の順で開き、下部の「管理」からExcel アドインを選択して**[設定]** をクリックします。
2. [参照] ボタンから、作成したアドインファイル(例:PostgresConnector2-AddIn64.xll)を選択して**[OK]** を押します。

ポイント: ファイルを信頼できる場所に保存し、読み込み時にExcelのアドインリストに表示され、チェックが入っていることを確認してください。

まとめ

•	関数名のみを指定してApplication.Runで呼び出す。
•	Excelのセキュリティ設定でマクロを有効化し、必要に応じて「VBAプロジェクト オブジェクト モデルへの信頼」を設定する。
•	.xllアドインを読み込む際は、Excelのアドイン設定画面で読み込みを行う。

以上のポイントを設定することで、VBAからC#で作成したアドインの関数を呼び出し、ExcelでPostgreSQLやその他の外部システムと連携することが容易になります。

5
2
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
5
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?