使用宏使用excel中的数据创建xml

时间:2014-09-23 07:52:07

标签: xml excel

这是我的要求 - 1)我有一个xml和相应的xsd文档 2)它是一个具有多个元素及其层次结构的复杂xml。但是只有某些元素/字段很重要 3)我想用这些字段创建一个excel,用户可以在多个行中输入数据 4)当用户点击create xml时,应为每一行创建单独的xml 5)创建的xml应包含所有元素(用户输入+原始xml中的更多元素)

这只是一个样本 -

<A>
   <A1/>
   <A2/>
</A>
<B>
   <B1>*User entered value*</B1>
   <B2>*User entered value*</B2>
</B>
<C>
   <C1/>
   <C2/>
</C>

我在MSXML2.DOMDocument60上找到了一些引用,其中可以使用此API创建xml,并通过excel宏验证模式。但就我而言,有1000个标签。以下是我想到的一些选项 -

  1. 使用DOMDocument60 API并使用宏逐行构造xml。由于有1000个标签,这种方法会吞噬1000行代码,这将使维护变得麻烦!
  2. 由于我有示例xml,我可以清空现有值,然后使用用户输入的值(从excel单元格数据获取)通过宏更新xml。这似乎更有效,因为它可以节省1000行代码,但这可能吗?由于需要更新的元素分布在xml中,我是否能够搜索元素并仅更新该元素而不影响xml中的任何其他数据/标记?
  3. 可以用xsd完成任何事情吗?我的要求
  4. 没有闪现在我脑海中
  5. 还有其他选择吗?
  6. 感谢您的任何帮助。谢谢!

1 个答案:

答案 0 :(得分:0)

如果你有基础,你可以使用类似的东西:

Open "e:\0\xml.xml" For Input As #1
Open "e:\0\xml1.xml" For Output As #2

i = 1
While Not EOF(1)
    Line Input #1, aa

    If InStr(1, aa, "<B1>", vbTextCompare) > 0 Then
        aa = Left(aa, 3 + InStr(1, aa, "<B1>", vbTextCompare)) & Cells(i, 1).Value & Right(aa, Len(aa) - InStr(1, aa, "</B1>", vbTextCompare) + 1)
        i = i + 1
    End If

    Print #2, aa
Wend

Close #1
Close #2

代码复制原始文件,使用A列中的值更改标签B1内的文本 如果你有更多的“片段”,你可以合并不同的文件......