| 
    
     |  | こんにちわ 
 その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を移動してためしてみてください。
 
 おそらく今までとは違うエラーがでると思います。
 (関数の呼び出し方が定義の部分とちがってますから)
 
 とりあえず以上です。
 
 |  |