- 締切済み
VBAでDLLが見つからないエラー
CADのVBA(6.0)ですが、DLLが見つからないエラーが出ます ' こっちはエラーが出ない Public Declare Function SearchVBApath Lib _ "C:\Program Files\AppliTool\VB\DDDD.dll" (ByVal env As String, ByVal s As String) As Integer 'こっちだとエラーが出る Public Declare Function SearchVBApath Lib "DDDD.dll" (ByVal env As String, ByVal s As String) As Integer VBAプロジェクトファイルとDLLは同じフォルダにおいてあります 上記のようにフルパスだとエラーが出ないのですがDLL名だけだとこの関数のところでエラーがでます このDLL関数宣言行の前の方には他のDLL関数も同じようにパス省略で記述しているのですがそちらにはエラーが出ません どなたかヒント下さい、よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- temtecomai2
- ベストアンサー率61% (656/1071)
AutoCAD でしょうか、それとも VBA が組み込まれた別の CAD 製品でしょうかね。 そっち方面には詳しくないのですが、例えば Excel VBA の場合もデーター ファイルと DLL を同じ場所に置いてファイル名だけ指定しても NG です。 Excel VBA で言う場合のカレント フォルダーはオプションで設定する "既定のファイルの場所" (Excel 2007 の場合) です。 MsgBox CurDir でカレント フォルダーがどこなのか確認できます。 http://www.vbalab.net/vbaqa/c-board.cgi?cmd=ntr;tree=5215;id=excel
- piyo2000
- ベストアンサー率49% (144/293)
>VBAプロジェクトファイルとDLLは同じフォルダにおいてあります デバッガ(IDE上)での話ですよね? この場合、カレントはVB6.exeのインストールパスとなるので、見つからないのだと思います。(プロジェクトファイルは関係なかったはず) 試しに("DDDD.dll"で)コンパイルしてexeにし、exeとDLLを同じパスに置いて実行してみてください。動くと思います。
お礼
temtemomai さん piyo2000 さん 回答ありがとうございました、 申し訳ありません、やはりこれだと!いう解決ヒントにはなりませんでした 質問に書きましたが、宣言部には同じDLL内の他の関数も羅列しているのですが この関数だけがエラーを出すのです 最初はフルパス書いていたのですがソースとDLLを同じ所に置けば 見つけるのを確認してパスを消していったらこんなことになってしまいました。