• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセルVBA実行時のエラー:DLLファイルが見つ)

エクセルVBA実行時のエラー:DLLファイルが見つ

このQ&Aのポイント
  • エクセルVBA実行時に発生するエラー「ファイルが見つかりません」について説明します。
  • エクセルVBA実行時に「実行時エラー'53'」が発生し、DLLファイルが見つからないというエラーメッセージが表示されます。
  • エクセルVBA実行時のエラーメッセージ「実行時エラー'53'」が発生した場合の原因と対処法について説明します。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.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実行時の環境変数の方も確認してみるとか。

MKT_
質問者

お礼

 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

MKT_
質問者

補足

 なんとVSをインストールしたら正常に動きましたm(_ _)m よく分かっておりませんが、DLL内で最初に読み込まれているstdio.hなどがVSのフォルダ内にしか見つかりませんでしたので、何かかけているものがあるのかな?などと考えてダメ元でインストールしてみました。(できればインストールしたくないのですが。。。orz)  この度はご親切にどうもありがとうございましたm(_ _)m