Skip to main content
Participant
December 27, 2017
Answered

MS Access VBA: Error in loading DLL

  • December 27, 2017
  • 1 reply
  • 3920 views

I have Acrobat 9 Standard, and the corresponding SDK.  I'm working on an older MS Access 2003 program using VBA.  I want to programatically combine 3 PDFs into 1.  I have gleaned examples and advice from various forums to create the code.  The code compiles with no errors, but when it's run, I get that old error: "Error in loading DLL."

The Reference is: Adobe Acrobat 9.0 Type Library

The path listed is: C:\Program Files (x86)\Adobe\Reader 11.0\Reader\AcroRd32.dll

And the file is there.

When choosing the Reference, I check just plain "Acrobat", which Access switches to the above file.  That file is not listed separately among the numerous Adobe and Acrobat DLL References available.  I tried choosing other DLLs in place of "Acrobat", but they will not compile.  So, Access recognizes that DLL, and finds the objects used in the code, compiling it without error.

Dim pdfOrigDoc As Object

Dim pdfNewDoc As Object

Set pdfOrigDoc = CreateObject("AcroExch.PDDoc")

Set pdfNewDoc = CreateObject("AcroExch.PDDoc")

The code will run through and past those lines without error, but errors when it tries to use those objects.

(The array is populated with 3 PDF files and paths.)

If pdfNewDoc.Open(arr_varFromPath(FP_PDF, LBound(arr_varFromPath, 2))) = True Then

If, instead of using late binding, I use early binding,

Dim pdfOrigDoc As Acrobat.CAcroPDDoc

Dim pdfNewDoc As Acrobat.CAcroPDDoc

I get "Error in loading DLL" on the Set statements.  I tried variations using 'New Acrobat.CAcroPDDoc', but it definitely didn't like those.  It seems odd that the Dim statement uses 'Acrobat.CAcroPDDoc', but the Set statement uses 'AcroExch.PDDoc'.

What's the problem?  Why does it recognize it when compiling, but not when running?  It's a fairly simple little procedure.  What am I doing wrong?

This topic has been closed for replies.
Correct answer victorcamp

Taking bits of information from other forum posts, my code now works!

  1. I uninstalled Acrobat Reader, since, having the full version of Acrobat, it seemed superfluous anyway
  2. I then did a Repair on my Acrobat 9 Standard.
  3. This time, when I chose the Acrobat.tlb in the Access References window, it remained pointing to the TLB, and correctly identified itself as Acrobat 9.0 Type Library.

A little of this, a little of that, and the problem was solved.  But isn't that always the way with programming?

1 reply

lrosenth
Adobe Employee
Adobe Employee
December 27, 2017

First off, we no longer support Acrobat 9.

Second, if you look at the path, you will clearly see that it is pointing to READER 11 and not Acrobat 9. Reader doesn’t support combining.

Participant
December 27, 2017

I noticed the path, yes, but that's the one that Access chose.  If Access went looking for the appropriate DLL, it shouldn't matter where it found it.  If that's not the right DLL, then what is the right DLL?  There are dozens of various DLLs in several Acrobat directories.  With a full version of Acrobat, I would assume I've got the right one somewhere.  Is there a listing of DLLs vs. Acrobat versions I can refer to?  Do you know the correct DLL I need to reference?

victorcampAuthorCorrect answer
Participant
December 27, 2017

Taking bits of information from other forum posts, my code now works!

  1. I uninstalled Acrobat Reader, since, having the full version of Acrobat, it seemed superfluous anyway
  2. I then did a Repair on my Acrobat 9 Standard.
  3. This time, when I chose the Acrobat.tlb in the Access References window, it remained pointing to the TLB, and correctly identified itself as Acrobat 9.0 Type Library.

A little of this, a little of that, and the problem was solved.  But isn't that always the way with programming?