ExcelのVBAからC#で作成したExcel DNAアドインを呼び出す際に直面する一般的な問題と解決策について、ポイントを簡潔にまとめます。
- アドイン関数を呼び出す際、名前空間やクラス名が不要
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のように指定するとエラーになります。
- セキュリティ設定でマクロを有効化する必要がある
VBAからアドインを安全に利用するためには、Excelのセキュリティ設定でマクロを有効にする必要があります。
• ファイル > オプション > セキュリティセンター > セキュリティセンターの設定 > マクロの設定 で「すべてのマクロを有効にする」か、信頼するフォルダ内で実行するよう設定します。
• VBAプロジェクト オブジェクト モデルへの信頼を設定にチェックを入れておくと、アドイン内のVBAプロジェクトにアクセスできるようになります。
- .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やその他の外部システムと連携することが容易になります。