【実行時エラー49】DLL が正しく呼び出せません
-
Contents
- エラー表示
- エラーの発生理由について
- 解決方法は?
- 関連リンク
エラー表示
このエラーが発生すると、実行時に次のエラーが表示されます。
実行時 エラー '49'
DLL が正しく呼び出せません。
エラーの発生理由について
エラーの原因は Excel側のバグのようです。サブルーチンに移動した際に本エラーが発生するようですが、筆者は昨日まで動いていたプロシージャが突然このエラーで動かなくなった記憶があります。
下にエラーのサンプルを記載しますが、このエラーを確実に再現させることが難しいため、あくまで参考としてご覧下さい。
Sub TestFunc1()
Call TestFunc2("test")
End Sub
' 次のプロシージャ呼び出し時、何故かエラー
Sub TestFunc2(ByVal sample as String)
MsgBox sample
End Sub
解決方法は?
職場でこのエラーが発生した時の対応法ですが、エラー先のプロシージャをSubプロシージャからFunctionプロシージャに切り替え、コンパイルし、元のSubプロシージャに戻したらエラーが解消しました。
少し分かり難いかもしれないため、順に説明します。
-
呼び出し先をFunctionプロシージャに変更
Sub TestFunc1() Call TestFunc2("test") End Sub ' SubサブプロシージャからFunctionへ変更 Function TestFunc2(ByVal sample as String) MsgBox sample End Function
-
デバッグ → VBAProjectのコンパイル を行う
-
呼び出し先をSubサブプロシージャへ戻す
Sub TestFunc1() Call TestFunc2("test") End Sub ' Subサブプロシージャへ Sub TestFunc2(ByVal sample as String) MsgBox sample End Sub
Microsoft公式の解答
Microsoft公式のリファレンスには、間違った型の引数がルーチンへ渡しているなど、いくつか候補が挙げられています。
参考になるかは不明ですが、時間がある方はどうぞ。
Microsoft公式(DLL を正しく呼び出せません (エラー 49))へ