Loading xml files

M

Mike Archer

Hello - I have had luck loading xml files using the following declaration and
assignment in the sub routine:

Set xmlDoc = CreateObject("Microsoft.XMLDOM")
xmlDoc.async = "false"
xmlDoc.Load ("G:\CatTree.xml")

However, I have downloaded a sample excel file that makes the following
declaration in the declarations section of the module:

Dim catTree As MSXML2.DOMDocument

And later in the sub routine, the file is loaded with the following code:

Set catTree = New Msxml2.DOMDocument
catTree.async = False
catTree.Load (catTreeFileLocation)

What is the difference between the two ways of handling xml. The reason I
ask is that the 2nd example works just fine in the excel file that I
downloaded. But if I try to duplicate in any other file, I get a compile
error: "User-defined type not defined." at the module level declaration.
What could be the difference between the file I downloaded and a file I
create myself? I'm talking about duplicating the whole project so that there
is no difference... I still get the compile error.
 
T

Tom Ogilvy

It sounds like the error is caused because you have not created a reference
to the library that defines MSXML2

in the workbook that workds, go into the VBE and with that workbook as the
activeproject in the vbe (selected in the project explorer window), go into
Tools=>References. You should see a reference to Microsoft XML, ver x.x

where x.x will be the version number. Then you can go to the object
browser and select MSXML2 and see the objects such as DOMDocument.

So in your other applications, you will need to set the reference to use the
second approach. The first approach you show is called late binding and
avoids the need to set the reference.
 
M

Mike Archer

Great! That works now. BTW - Are there any disadvantages to using the late
binding approach? I like not having to worry about setting the library
reference.
--
Thanks,
Mike


Tom Ogilvy said:
It sounds like the error is caused because you have not created a reference
to the library that defines MSXML2

in the workbook that workds, go into the VBE and with that workbook as the
activeproject in the vbe (selected in the project explorer window), go into
Tools=>References. You should see a reference to Microsoft XML, ver x.x

where x.x will be the version number. Then you can go to the object
browser and select MSXML2 and see the objects such as DOMDocument.

So in your other applications, you will need to set the reference to use the
second approach. The first approach you show is called late binding and
avoids the need to set the reference.
 
T

Tom Ogilvy

It is slower and in development, you don't get intellisense. However, it
isn't a lot slower.

A lot of people use early binding for development, then switch to late
binding for distribution to avoid version problems with library references.

--
Regards,
Tom Ogilvy

Mike Archer said:
Great! That works now. BTW - Are there any disadvantages to using the late
binding approach? I like not having to worry about setting the library
reference.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top