- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセルVBA実行時のエラー:DLLファイルが見つ)
エクセルVBA実行時のエラー:DLLファイルが見つ
このQ&Aのポイント
- エクセルVBA実行時に発生するエラー「ファイルが見つかりません」について説明します。
- エクセルVBA実行時に「実行時エラー'53'」が発生し、DLLファイルが見つからないというエラーメッセージが表示されます。
- エクセルVBA実行時のエラーメッセージ「実行時エラー'53'」が発生した場合の原因と対処法について説明します。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
> ・VBAのカレントパスは > ChDrive Left(ThisWorkbook.Path, 1) > ChDir ThisWorkbook.Path > で変更しております。 どういうタイミングでですか? DLL宣言時には、まだ呼ばれてないのでは。もっとも、実行時にDLLファイル探しに行くのか、よくわからんですが。 あるいは、ChDirの前に、そもそもカレントパスCurDirがどこになってるか確認とか。 対症療法だと、いっそのこと絶対パスでDLLの場所指定してしまうとか。 Declare Function hoge Lib "D:\Documents\VBA_TEST\Test4.dll" ~ 理屈の上だと、カレントパスや環境変数%PATHに記載されている場所からTest4.dll探すハズなので、Excel実行時の環境変数の方も確認してみるとか。
お礼
neKo_quatre様 どうもありがとうございます!m(_ _)m VBA実行直後のCurdirは、 PC1,PC2はD:\Users\Administrator\Documents PC3はD:\Documents でしたので、D:\DocumentsにTest4.dllを置いたりもしてみましたが動作いたしませんでした。 ChDrive Left(ThisWorkbook.Path, 1) ChDir ThisWorkbook.Path は、VBA実行の最初に記述しておりまして、 その後の MsgBox CurDir Average = TestFunc(Ave_Back(1)) のMsgBoxでは、D:\Documents\VBA_TEST が表示されました。 宣言も絶対パスに書き換えてみましたが、改善いたしませんでした。。。 Declare Function TestFunc Lib "Test4.dll" Alias "SampleFunc" _ (Ave_Back As Double) As Double ↓ Declare Function TestFunc Lib "D:\Documents\VBA_TEST\Test4.dll"Alias "SampleFunc" _ (Ave_Back As Double) As Double DLL中身の関数名が間違っている場合にも同じ「エラー53」が出るらしいのですが 全く同じエクセルファイルとDLLを各PCにコピペしておりますので、そのような問題はないのではと思います。 一体何が原因なのでしょう。。。。??? (?_?) この度はご親切に誠にありがとうございました!m(_ _)m
補足
なんとVSをインストールしたら正常に動きましたm(_ _)m よく分かっておりませんが、DLL内で最初に読み込まれているstdio.hなどがVSのフォルダ内にしか見つかりませんでしたので、何かかけているものがあるのかな?などと考えてダメ元でインストールしてみました。(できればインストールしたくないのですが。。。orz) この度はご親切にどうもありがとうございましたm(_ _)m