こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

-広告-

解決済みの質問

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

タイトル:エクセルVBA実行時のエラー:DLLファイルが見つかりません

 質問させていただきます。どうぞよろしくお願いいたします。
環境:PC1~3の全てが、Excel2010、Win7になります。
初めてVBAから読み込むためのDLLファイルを作成いたしました。
 
 PC1上で動作確認できている2つのファイル(Test4.dll(VC++2013にて作成)と
それを呼び出すVBAのついたエクセルファイル)を、
PC2とPC3に移動し、VBAを実行しましたところ
何故かPC3でのみ下記エラーが発生いたします。
>実行時エラー'53'
>ファイルが見つかりません。Test4.dll

・2つのファイルは同じフォルダ内で実行しております。
・VBAのカレントパスは
  ChDrive Left(ThisWorkbook.Path, 1)
  ChDir ThisWorkbook.Path
で変更しております。
 試しにC:\Windows\System32と C:\Windows\SysWow64にも
Test4.dllをコピペしてみましたが、同じエラーが出てまいります。

・PC3のみ違うところを探してみましたが、思いつくのは下記くらいでございます。
  1.VSが入っておりませんでした。(必要なのでしょうか??)
  2.実行しているパスが違います。
    PC1とPC2の実行パス:
     D:\Users\Administrator\Documents\VBA_TEST
    PC3の実行パス:
     D:\Documents\VBA_TEST
     
     
 もし何か原因として思いつかれる事がございましたらお教えいただけないでしょうか。
お詳しい方がいらっしゃいましたら何卒よろしくお願いいたします。

投稿日時 - 2016-02-20 23:45:47

QNo.9131380

困ってます

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

> ・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実行時の環境変数の方も確認してみるとか。

投稿日時 - 2016-02-21 10:02:45

補足

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

 この度はご親切にどうもありがとうございましたm(_ _)m

投稿日時 - 2016-02-21 19:41:46

お礼

 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

投稿日時 - 2016-02-21 10:57:58

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

-広告-
-広告-

回答(1)

-広告-
-広告-

あなたにオススメの質問

-広告-
-広告-