Home |
Search |
Today's Posts |
#1
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
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. -- Thanks, Mike |
#2
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
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. -- Regards, Tom Ogilvy "Mike Archer" wrote in message ... 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. -- Thanks, Mike |
#3
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
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" wrote: 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. -- Regards, Tom Ogilvy "Mike Archer" wrote in message ... 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. -- Thanks, Mike |
#4
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
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" wrote in message ... 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" wrote: 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. -- Regards, Tom Ogilvy "Mike Archer" wrote in message ... 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. -- Thanks, Mike |
Reply |
Thread Tools | Search this Thread |
Display Modes | |
|
|
![]() |
||||
Thread | Forum | |||
trouble loading excel files | Excel Discussion (Misc queries) | |||
Loading Excel files | Setting up and Configuration of Excel | |||
loading txt files with more than 256 columns | Excel Programming | |||
Excel Automation - loading text files | Excel Programming |