Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

problem with "file not found" calling a dll from VBA

2,315 views
Skip to first unread message

Brian Murphy

unread,
Aug 21, 2009, 1:42:02 AM8/21/09
to
I'm going nuts!
From VBA I call a routine in a DLL which was compiled with visual
studio (language is fortran)
It works fine on some computers, but on others it throws up a

Run-time error '53':
File not found: myfilename.dll

It does this even though the dll file is quite definitely there.
A small program compiled with VB6 to do what VBA does behaves the same
way.

In the VB code if I change the name of the routine being called to a
name that is not in the dll, the same error message is displayed.

Something is messed up somewhere, but I just can't figure out what it
is!@#$%

Has anyone encountered this problem, and know how to solve it? I'm
desperate.

The problem can happen with either XP or Vista, and with either excel
2003 or excel 2007.

Thanks,

Brian

Peter T

unread,
Aug 21, 2009, 7:17:00 AM8/21/09
to
How are you declaring the function and where is the dll. If the full path is
not included in the declaration is the dll in one of the places that
automatically get searched, eg the system32 folder. Or are you doing a ChDir
to the path before calling.

Regards,
Peter T

"Brian Murphy" <bmu...@xlrotor.com> wrote in message
news:4b4ba20e-6ed3-4d0c...@d4g2000yqa.googlegroups.com...

Brian Murphy

unread,
Aug 21, 2009, 9:02:34 AM8/21/09
to
I've tried all the things you've suggested. That's why I'm going
nuts.

I think the problem might be some other file in the Windows directory
needs to be present, and it is on some systems but not all. I have
made other dll's that don't have this problem. I'm trying to figure
out if there is some linker option I need to turn on. So far I
haven't found anything. But the more I think about it, the more
convinced I am this is the answer.

Brian

Peter T

unread,
Aug 21, 2009, 9:19:05 AM8/21/09
to
Just to be sure, remove the path from the declaration and try something like
this

sPath = "C:\<path>\"
sFile = "myApp.dll"

sOldDir = CurDir
ChDir sPath

On Error Resume Next
nAttr = GetAttr(sFile)
bFileExists = (Err.Number = 0) And ((nAttr And VBA.vbDirectory) = 0)
ChDir sOldDir
On Error GoTo 0

If bFileExists Then
' Call your dll function stuff here
Else
MsgBox sPath & sFile & vbCr & "not found"
End If

Regards,
Peter T


"Brian Murphy" <bmu...@xlrotor.com> wrote in message

news:f3e9531f-054e-4ea2...@m7g2000prd.googlegroups.com...

Brian Murphy

unread,
Aug 21, 2009, 10:02:57 AM8/21/09
to
I essentially have tried exactly that, and it makes no difference.

I'm pretty sure it's a compiler dependency thing?

I just posted my question on comp.lang.fortran
This particular newsgroup has more spam than fortran.
Which is a downright shame.
I wonder how the excel newsgroups avoid this?

Brian

Brian Murphy

unread,
Aug 21, 2009, 11:16:58 AM8/21/09
to
I haven't got it fixed yet. But with some help from comp.lang.fortran
I've learned that my dll depends on a file named DFORRTD.DLL.

So I hope to have this fixed later tonight.

Brian

Brian Murphy

unread,
Aug 21, 2009, 11:24:17 PM8/21/09
to
My problem is solved. The details are at the following post in the
comp.lang.fortran newsgroup.

http://groups.google.com.na/group/comp.lang.fortran/msg/d4ae6d5b2dcf8c42

The "file not found" error 53 was caused by some fortran-compiler-
specific dlls that were needed that I didn't know about. When I
eliminated that, the problem cleared up.

But also the very same error message is triggered if the upper/lower
case of the routine name doesn't match that in the dll.

Cheers,

Brian

0 new messages