【问题标题】:VBA Function To Read XML Nodes读取 XML 节点的 VBA 函数
【发布时间】:2015-07-08 15:10:31
【问题描述】:

我对使用 XML 非常陌生,想知道是否有人可以帮助我入门?

我正在尝试编写一个 VBA 函数,该函数可以输出仅包含列表名称的数组 [即 Array("Recon", "Safety", "Performance")]。

我还需要具有输出仅包含特定“To”节点文本的数组的功能。例如,我可以调用该函数来拉取参考侦察列表 [ie Array("Jane","Ashley") 或 Array("Jane;Ashley;") 的名称,无论哪个对我来说最有意义的输出)

另外,如果有更好的方法来构建这个 XML,我愿意改变,因为我是从头开始编写的,我的 VBA 用户表单最终将创建和修改这个文件。

<?xml version="1.0" encoding="utf-8"?>
<Settings>
<DistributionLists>
    <List>
        <Name>Recon</Name>
        <TO>John;Bob;Rob;Chris;</TO>
        <CC>Jane;Ashley;</CC>
        <BCC>Brent;</BCC>
    </List>
    <List>
        <Name>Safety Metrics</Name>
        <TO></TO>
        <CC></CC>
        <BCC></BCC>
    </List>
    <List>
        <Name>Performance Report</Name>
        <TO></TO>
        <CC></CC>
        <BCC></BCC>
    </List>
</DistributionLists>

<Presets>
</Presets>

</Settings>

【问题讨论】:

标签: arrays xml vba excel


【解决方案1】:

这是获取To 数组的示例。获取其他数组/节点的良好起点。

Function GetToArr()
    Dim XDoc As Object
    Dim xEmpDetails As Object
    Dim xEmployee As Object
    Dim xChild As Object

    Set XDoc = CreateObject("MSXML2.DOMDocument")
    XDoc.async = False
    XDoc.validateOnParse = False
    XDoc.Load ("C:\[path]\test.xml")
    Set items = XDoc.DocumentElement
    Set Item = items.ChildNodes(0)
    Set Item = Item.FirstChild
    Set Item = Item.ChildNodes(1)
    GetToArr = Split(Item.Text, ";")
End Function

Sub TestGetToArr()
    For Each it In GetToArr()
        Debug.Print it
    Next it
End Sub

结果:

John
Bob
Rob
Chris

【讨论】:

  • 谢谢!这帮助了很多:)
猜你喜欢
  • 1970-01-01
  • 2016-08-13
  • 1970-01-01
  • 2020-08-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多