by イグトランス » 2006年12月20日(水) 00:10
ABにはVBで参照設定して使えるDLLを作れる環境が整っていません。
ABで作成したDLL(関数をExportで公開したもの)をVB/VBAで使うにはDeclareで宣言することになります。
VBのDeclareのLib部分ではDLLの指定にフルパスを指定できるはずです。念のためフルパスで指定してみてはどうでしょうか。
引数は大部分がAB/VBで同じように扱えますが細かい違いに気を付けて下さい。
まず,ByRef/ByValを省略したときの扱いがAB/VBでは異なっているので,AB/VB共に省略しないことをお勧めします。
ABでTへのポインタ型にしている場合は,(一次元配列を渡すつもりでも)VBではTのByRef引数にします。
VBで文字列 (String)を引数にしたければ,VBではByValなString型の引数とし,ABではByValな*Byte型の引数とします。VBが適切に変換をしてくれます。
Variant型や多次元配列を受け渡すことも不可能ではありませんが,ABでは単なる構造体へのポインタとなり,
その操作にはAPI関数を使いVBのように気楽に扱える代物ではなくなっています。
少なくとも現時点ではAB/VB間のやりとりには使わないようにするのがお勧めです。
ABにはVBで参照設定して使えるDLLを作れる環境が整っていません。
ABで作成したDLL(関数をExportで公開したもの)をVB/VBAで使うにはDeclareで宣言することになります。
VBのDeclareのLib部分ではDLLの指定にフルパスを指定できるはずです。念のためフルパスで指定してみてはどうでしょうか。
引数は大部分がAB/VBで同じように扱えますが細かい違いに気を付けて下さい。
まず,ByRef/ByValを省略したときの扱いがAB/VBでは異なっているので,AB/VB共に省略しないことをお勧めします。
ABでTへのポインタ型にしている場合は,(一次元配列を渡すつもりでも)VBではTのByRef引数にします。
VBで文字列 (String)を引数にしたければ,VBではByValなString型の引数とし,ABではByValな*Byte型の引数とします。VBが適切に変換をしてくれます。
Variant型や多次元配列を受け渡すことも不可能ではありませんが,ABでは単なる構造体へのポインタとなり,
その操作にはAPI関数を使いVBのように気楽に扱える代物ではなくなっています。
少なくとも現時点ではAB/VB間のやりとりには使わないようにするのがお勧めです。