回答編集履歴
1
COMラッパーについて追記
answer
CHANGED
@@ -3,7 +3,7 @@
|
|
3
3
|
|
4
4
|
VBA 等のActiveXの世界から呼び出されることを前提にしている .Net マネージDLLを開発する場合、そのDLLに含まれている .Net オブジェクトがActiveXに対してCOMというインターフェースを通じて機能を公開する、という宣言を含める必要があります。しかし、Npgsqlはそのようになっていない、というのが原因だと思います。
|
5
5
|
|
6
|
-
###代替案
|
6
|
+
###代替案1: ODBC/OLE DBによる接続
|
7
7
|
Excel VBAからPostgreSQLへのアクセスは、ODBCやOLE DBによって行うこともできます。
|
8
8
|
|
9
9
|
- [PostgreSQL 9.2にクライアントから接続する PostgreSQL ODBC Driverのインストールと接続確認](http://www.cyber-funnel.com/postgres/index1156.html)
|
@@ -11,4 +11,14 @@
|
|
11
11
|
- [Works データベース接続あれこれ / 接続文字列(PostgreSQL: OLE DB)](http://homepage1.nifty.com/kojama/works/rdbms/conn/connstr.html#psqloledb)
|
12
12
|
- [Works データベース接続あれこれ / 接続文字列(PostgreSQL: ODBC)](http://homepage1.nifty.com/kojama/works/rdbms/conn/connstr.html#psqlodbc)
|
13
13
|
|
14
|
+
###代替案2: COMラッパーによるNpgsqlの利用
|
15
|
+
もう一つの代替案として、NpgsqlとExcelVBA(.NetとActiveX)を仲介するために、独自のCOMラッパーDLLを開発する方法があります。
|
16
|
+
|
17
|
+
簡単に言うと、NpgsqlがCOM公開インターフェースを持っていない(.Net専用)なら、Npgsqlの機能にアクセスする .Net マネージDLLを自分で開発して、そいつにCOM公開インターフェースを持たせればいいじゃない!という方法になります。
|
18
|
+
|
19
|
+
COMラッパーはActiveX時代のアプリケーションと.Netの世界を橋渡しする方法として、マイクロソフトも推奨している正しい戦略です。COMラッパーの仕組みと実装方法の詳細は、以下のサイトが参考になると思います。
|
20
|
+
|
21
|
+
- [MSDN: COM 呼び出し可能ラッパー](https://msdn.microsoft.com/ja-jp/library/f07c8z1c(v=vs.110).aspx)
|
22
|
+
- [MSDN: 方法: COM ラッパーを作成する](https://msdn.microsoft.com/ja-jp/library/ms404285(v=vs.110).aspx)
|
23
|
+
|
14
24
|
ご参考になれば。
|