VBA - 尝试基于多个范围创建XML

时间:2016-01-11 07:36:29

标签: excel-vba select vba excel

我正在尝试将输出创建为XML(另存为文本文件+" .xml")。 XML的布局是:

<file-info> (forsendelse)
<record-info>
..account#..
</record-info>
</file-info>

我已经创建了一系列用于编写XML的字段,以便我可以复制&#34;从电子表格到文本文件。

我尝试了以下内容:

With Worksheets("XML_generator")
    Set forsendelse1 = .Range("G10:G31")
    dat = forsendelse1.Value
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set myrange1 = .Range("G32:G40")
    dat = myrange1.Value
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set myrange_acc = .Range("G41:G41")
    dat = myrange_acc.Value
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set myrange2 = .Range("G42:G73")
    dat = myrange2.Value
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set forsendelse2 = .Range("G74:G75")
    dat = forsendelse2.Value
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set a = fs.CreateTextFile(FPath & "Request_" & FName & "_" & FDate & ".xml", True)
End With

当我这样做时,我只在我的XML中得到最后一个范围(&#34; forsendelse2&#34;)。有没有人知道如何让它发挥作用?

请注意:

  • &#34; ..帐户#..&#34;只是工作簿中的一个单元格。这是主要的 要在出口之间改变的数据。
  • 不使用内置的XML生成器,因为我需要导出空白标签,因为验证
  • 分成5是为了让我前进可以添加多个&#34; record1 + ..account#.. + record2&#34;

将来我希望结果看起来像这样:

<file-info> (forsendelse)
<record-info>
..account#.. (i.e "A2" from sheet)
</record-info>
<record-info>
..account#.. (i.e "A3" from sheet)
</record-info>
</file-info>

但是因为我还没有尝试过#34;而循环&#34;在这方面,首先我希望有人能帮助我解决我的范围问题:)

感谢您抽出宝贵时间!

祝你好运 安德烈亚斯彼得森

1 个答案:

答案 0 :(得分:0)

如果你想从多个部分建立一个字符串,那么你需要附加每个部分,如下所示:

dat = "stack"
dat = dat & "overflow"
dat = dat & ".com"

dat的值现在是“stackoverflow.com”。

您的代码会覆盖现有值而不是附加到它:

dat = "stack"
dat = "overflow"
dat = ".com"

dat的值现在为“.com”

其他问题:

  • 目前尚不清楚为什么要创建多个未被使用的FileSystemObjects(只有最后一个被用于任何东西)
  • 使用MSXML2并构建DOMDocument可能更容易,而不是尝试将XML创建为字符串