Excel VBA質問箱 IV

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

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


75953 / 76738 ←次へ | 前へ→

【5216】ChDir ActiveWorkbook.Path
回答  こう E-MAIL  - 03/4/27(日) 19:08 -

引用なし
パスワード
   チャオ さん,こんにちわ。


>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)ですかね。

2 hits

【5215】DLL関数の呼び出し方法 チャオ 03/4/27(日) 3:53 質問
【5216】ChDir ActiveWorkbook.Path こう 03/4/27(日) 19:08 回答
【5217】Re:ChDir ActiveWorkbook.Path チャオ 03/4/27(日) 23:02 お礼

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