自作DLLをエクセルVBAで使用したい
こんにちは。
自作DLLをエクセルVBAで使用したいのですが、知識不足でうまく動かせません。どうぞお知恵をお貸しください。
例えば足し算をするCのプログラムを以下のように作ります。ファイル名は"wa.c"とします。
#define EXPORT __declspec(dllexport) __stdcall
EXPORT double wa(double a,double b)
{
return(a+b);
}
これをコンパイルして、DLLファイル"test.dll"を作ります。
gcc -shared -o test.dll wa.c
エクセルVBAのモジュールには次のように記述しました。
Declare PtrSafe Function wa Lib "test.dll" (ByVal a As Double, ByVal b As Double) As Double
ここで作成した関数をワークシート関数として呼び出したいのですが、ワークシート上での返り値は常にゼロになってしまいます。例えば、ワークシートのセルに"=wa(1.2,3.5)"と記入すると、"4.7"を返してほしいところですが、ゼロとなってしまいます。ワークシート関数として正しく動作させるにはどうしたらよいでしょうか?
ちなみに、この関数をエクセルVBAのサブルーチンで使うことはできます。例えばこんな感じです。
Sub test()
x = 1.2
y = 3.5
Call MsgBox(wa(x, y))
End Sub
また、上記の"test.dll"を他のCのプログラムから呼び出すことも正しくできます。
なお、64bitのエクセルを使っています。Cのコンパイラも64bitです。
どうぞよろしくお願いいたします。
お礼
TCA様回答ありがとうございました。インストールし直しましたが、同じメッセージが出て開きませんした(##)。 ファイル中のデーターのみですが、蘇らせる方法を知っているのでそれで復活させます。。これからはシート毎のバックアップをとるようにしますね! 失敗は成功のもと☆ですね