|
こんにちわ
そのDLLをどうやってつくったかということにもよるので、
ミントさんからその部分の説明がありませんので、
なんとも曖昧な答えになってしまいます。
で、自分で持ってる環境の場合だけで説明します。
もしVB6でDLLをつくったとすると、VB6ではActiveXDLLしか作れなくて、
VB6のプロジェクトのクラスモジュールの中にFunctionが書いてあると
思います。
この場合、エクセルのVBA側では、VB6で作ったActiveXDllを参照設定して、
呼び出しのコードは、
Sub sample
Dim MyClass as New Class1 ' ここはVB6のプロジェクトのクラス名です
Worksheets(1).TextBox1.Text= myClass.Test("No=1")
End Sub
というようなコードになります。
この場合は、Declareステートメントは必用ありません。
で、さて
FortranとかDelphiとかでActiveXDllではないDLLを作った場合、
参照設定しても駄目で、WindowsAPIを呼ぶときと同じように、
Declareステートメントで定義してやって呼び出すことになります。
で、ですね、そのとき
Private Declare Function Test Lib _
"C:\Documents and Settings\owner\デスクトップ\test.dll" _
(ByVal strTest As String) As String
Libの部分のパスにスペースが含まれているとうまくいかないです。
デスクトップではなくて適当なドライブのパス名にスペースが含まれない
場所にDLLを移動してためしてみてください。
おそらく今までとは違うエラーがでると思います。
(関数の呼び出し方が定義の部分とちがってますから)
とりあえず以上です。
|
|