VBAからDLLをCALLしたいのですが
仕事上今まで蓄積されているFortranプログラムを効率よく使いたくDLL,VB,VBAにチャレンジしていますが,
Intel(R) Fortran Compiler9.0で作成したDLLをEXCELのVBAからCALLしたところ 実行時エラー'49' DLLが正しく呼び出せません のエラーが表示されました。 このDLLはVisual Basic .NETで作成したVBからは正しくCALLできています。 色々原因を調べているのですがVBAからDLLの呼び出しとDLL内の計算は正しく行われておりDLLからVBAに戻るときにエラーになっているようです。
テストを行っているFortranとVBAのソースは以下です。VBAでDLLをCALL出来るように解決いたしたくご教授願お願いいたします。
(1)---- Fortran ソース ---------------------------
subroutine DLL1(Q,QQ,QQQ)
! Expose subroutine DLL1 to users of this DLL
!
!DEC$ ATTRIBUTES DLLEXPORT::DLL1
!DEC$ ATTRIBUTES ALIAS:'DLL1'::DLL1
! Variables
! Body of DLL1
real*4 Q,QQ,QQQ
QQ = Q*2
QQQ = Q**3
end subroutine DLL1
(2)----------- VBA ソース --------------------
Private Q As Single
Private QQ As Single
Private QQQ As Single
Declare Sub DLL1 Lib "DLL1.dll" (ByRef Q As Single, ByRef QQ As Single, ByRef QQQ As Single)
Sub Macro1()
ChDrive ActiveWorkbook.Path
ChDir ActiveWorkbook.Path
Q = 2#
Call DLL1(Q, QQ, QQQ)
Cells(5, 2) = Format(Q, "#####.#0")
Cells(6, 2) = Format(QQ, "#####.#0")
Cells(7, 2) = Format(QQQ, "#####.#0")
End Sub
お礼
レジストリ登録は済んでいます。 mfcで作ったdllの方が「迷子」になってる様なのです。 mfcで作ったdllははレジストリ登録などしないタイプなので困っていたのです。 スイマセンがまた別の形で質問しますので今回は打ち切ります。 お答えは正解でとても感謝しています。 また、宜しくお願いします