Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


64187 / 76732 ←次へ | 前へ→

【17127】Re:DLLの読み込み方法
回答  でれすけ  - 04/8/23(月) 15:38 -

引用なし
パスワード
   こんにちわ

その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を移動してためしてみてください。

おそらく今までとは違うエラーがでると思います。
(関数の呼び出し方が定義の部分とちがってますから)

とりあえず以上です。

1 hits

【17108】DLLの読み込み方法 ミント 04/8/23(月) 11:09 質問
【17109】Re:DLLの読み込み方法 IROC 04/8/23(月) 11:24 回答
【17110】Re:DLLの読み込み方法 ミント 04/8/23(月) 11:40 質問
【17112】Re:DLLの読み込み方法 IROC 04/8/23(月) 11:53 回答
【17113】Re:DLLの読み込み方法 ミント 04/8/23(月) 12:20 質問
【17114】Re:DLLの読み込み方法 IROC 04/8/23(月) 12:58 回答
【17116】Re:DLLの読み込み方法 ミント 04/8/23(月) 13:22 質問
【17117】Re:DLLの読み込み方法 IROC 04/8/23(月) 13:44 回答
【17120】Re:DLLの読み込み方法 ミント 04/8/23(月) 14:51 質問
【17122】Re:DLLの読み込み方法 IROC 04/8/23(月) 15:17 回答
【17127】Re:DLLの読み込み方法 でれすけ 04/8/23(月) 15:38 回答
【17137】Re:DLLの読み込み方法 ミント 04/8/23(月) 17:46 お礼

64187 / 76732 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free