作为一个背景位,我是一个相当新的编程人员。自从我上次'编码'以来,这已经差不多10年了,所以请放轻松;)。使用VBA从XML中提取数据
林目前正试图从下面的XML文件exctract数据:
- <IPNumber IPNumber="5">
- <Band Band="1">
- <Channel Channel="1">
<CMPWRE>0.123456</CMPWRE>
<CMPWIM>0.234567</CMPWIM>
</Channel>
- <Channel Channel="2">
<CMPWRE>-0.123456</CMPWRE>
<CMPWIM>0.234567</CMPWIM>
</Channel>
</Band>
- <Band Band="2">
- <Channel Channel="1">
<CMPWRE>0.123456</CMPWRE>
<CMPWIM>0.234567</CMPWIM>
</Channel>
</Band>
</IPNumber5>
- <IPNumber IPNumber="6">
- <Band Band="1">
- <Channel Channel="1">
<CMPWRE>0.123456</CMPWRE>
<CMPWIM>0.234567</CMPWIM>
</Channel>
- <Channel Channel="2">
<CMPWRE>-0.123456</CMPWRE>
<CMPWIM>0.234567</CMPWIM>
</Channel>
</Band>
- <Band Band="2">
- <Channel Channel="1">
<CMPWRE>0.123456</CMPWRE>
<CMPWIM>0.234567</CMPWIM>
</Channel>
</Band>
</IPNumber6>
目前IM希望用户选择IPnumber,信道和频带他们想要的..然后我想提取的CMPWRE &每个列表中像下面CMPWIM数据:
IPNumber 'X'
Band 'X'
Channel 'X'
CMPWRE 'XXX'
CMPWIM 'XXX'
下面是一小段程式码,即时通讯试图用提取的数据,但我只是没有得到任何运气得到它的工作。
代码:
Set oXML = CreateObject("MSXML.DOMDocument")
oXML.async = False
oXML.Load ("H:\14-13-21.xml")
Dim LgChan As String
Dim LgChan1 As String
Dim LgChan2 As String
**Dim LgChan3 As String
Dim LgChan4 As String**
Dim Test As Integer
Dim Test2 As Integer
Dim Test3 As Integer
Test = mobelenum0.Value ' User Box on GUI where a value is inputted E.G. the number 5
Test2 = FeedSubBand.Value ' User Box on GUI where a value is inputted E.G. the number 1
Test3 = LogicChannel.Value ' User Box on GUI where a value is inputted E.G. the number 1
LgChan = "TableContents/IPModuleNumber[@IPModuleNumber='1']"
LgChan1 = "//TableContents/IPModuleNumber/FeederSubBand[@FeederSubBand=" & Test2 & "]"
LgChan2 = "//TableContents/IPModuleNumber/FeederSubBand/LogicalChannel[@LogicalChannel=" & Test3 & "]"
**LgChan3 = "//TableContents/IPModuleNumber/FeederSubBand/LogicalChannel[@LogicalChannel=" & Test3 & "]/CMPWRE"
LgChan4 = "//TableContents/IPModuleNumber/FeederSubBand/LogicalChannel[@LogicalChannel=" & Test3 & "]/CMPWIM"**
Worksheets("sheet1").Range("B101").Value = oXML.DocumentElement.SelectSingleNode(LgChan).NodeTypedValue
Worksheets("sheet1").Range("B102").Value = oXML.DocumentElement.SelectSingleNode(LgChan1).nodeTypedValue
Worksheets("sheet1").Range("B103").Value = oXML.DocumentElement.SelectSingleNode(LgChan2).nodeTypedValue
**Worksheets("sheet1").Range("B104").Value = oXML.DocumentElement.SelectSingleNode(LgChan3).nodeTypedValue
Worksheets("sheet1").Range("B105").Value = oXML.DocumentElement.SelectSingleNode(LgChan4).nodeTypedValue**
IM努力获得的代码,这样,如果选择了differend带那么很明显的渠道价值将随着IPNumber变化通过过滤下来改变......一样了。
任何帮助将是伟大的!
Smerf
您是否拥有对xml布局的控制权?通过我的思维方式,是无效的XML。这不会帮助任何类型的解析器 –
Chris