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

使用宏从excel中使用数据创建xml,xml,excel,Xml,Excel,这是我的要求- 1) 我有一个xml和相应的xsd文档 2) 这是一个包含多个元素及其层次结构的复杂xml。但只有某些元素/字段是重要的 3) 我想用这些字段创建一个excel,用户可以在其中跨多行输入数据 4) 当用户单击CreateXML时,应该为每一行创建单独的xml 5) 创建的xml应该包含所有元素(用户输入+原始xml中的更多元素) 这只是一个样本- <A> <A1/> <A2/> </A> <B> <

这是我的要求- 1) 我有一个xml和相应的xsd文档 2) 这是一个包含多个元素及其层次结构的复杂xml。但只有某些元素/字段是重要的 3) 我想用这些字段创建一个excel,用户可以在其中跨多行输入数据 4) 当用户单击CreateXML时,应该为每一行创建单独的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个标签。下面是我想到的一些选择-

  • 使用DOMDocument60API并使用宏逐行构造xml。由于有1000个标签,这种方法将吞下1000行代码,这将使维护成为一项繁琐的任务
  • 由于我有示例xml,我可以清空现有值,然后通过宏使用用户输入的值(从excel单元格数据获取)更新xml。这似乎更有效,因为它将节省1000行代码,但这是可能的吗?由于需要更新的元素分布在xml中,我是否能够搜索一个元素并只更新该元素,而不影响xml中的任何其他数据/标记
  • xsd可以做些什么吗?没有一个会在我脑海中闪过我的要求
  • 还有其他选择吗

  • 谢谢你在这方面的帮助。谢谢

    如果你有一个基础,你可以使用这样的东西:

    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
    
    打开“e:\0\xml.xml”作为#1输入
    打开“e:\0\xml1.xml”,输出为#2
    i=1
    而不是EOF(1)
    线路输入#1,aa
    如果InStr(1,aa,“,vbTextCompare)>0,则
    aa=左(aa,3+指令(1,aa,“,vbTextCompare))&单元格(i,1)。值和右(aa,Len(aa)-指令(1,aa,“,vbTextCompare)+1)
    i=i+1
    如果结束
    印刷品#2,aa
    温德
    关闭#1
    关闭#2
    
    代码复制原始文件,用A列中的值更改标记B1内的文本。
    如果你有更多的“片段”,你可以合并不同的文件