|
チャオ さん,こんにちわ。
>Declare Function Test Lib "test.dll" (ByVal a As Long) As Long
>というような宣言すればいいのですが、起動するエクセルファイルと同じ場所に
>DLLを置くと”ファイルが見つかりません test.dll”というエラーがでてしまいま>DLLの場所を相対パスで指定するにはどうすればよろしいのでしょうか。
#".\test.dll"とか試してみたけどダメでした。
DLLの参照先は,カレントパスやsystem32などで,VBではカレントパスに
DLLをおくとキチンと参照してくれます。
じゃ,なんでExcelVBAはカレントパスにおいてもダメなの?
ということで調べてみたら,
Excelはカレントパスは[ツール]-[オプション]-[全般]で設定する,
『カレントフォルダ』で指定されているようです。
ですから,方法としては,
Declare で相対パスを指定するんではなく,"test.dll"と記述しておき
(1)DLLをカレントフォルダに格納する。
か,
(2)任意のフォルダに格納し,
(a)カレントパスをBOOKが存在するフォルダに変更する。
Application.DefaultFilePath="D:\test"
(b)VBA実行時に,BOOKが存在するフォルダに変更する
ChDir ActiveWorkbook.Path
があると思います。
>エクセルファイルと同じディレクトリにDLLを置きたい
ですので,上記(b)ですかね。
|
|