首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用excel宏使用excel数据创建xml

使用excel宏使用excel数据创建xml
EN

Stack Overflow用户
提问于 2014-09-23 07:52:06
回答 1查看 808关注 0票数 0

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

这只是个样本-

代码语言:javascript
复制
<A>
   <A1/>
   <A2/>
</A>
<B>
   <B1>*User entered value*</B1>
   <B2>*User entered value*</B2>
</B>
<C>
   <C1/>
   <C2/>
</C>

我在MSXML2.DOMDocument 60上找到了一些参考,其中可以使用这个API创建xml,还可以通过excel宏对模式进行验证。但在我的例子中,有1000 s的标签。以下是我想到的一些选择-

  1. 使用xml并使用宏逐行构造DOMDocument60。由于有1000 s的标记,这种方法会消耗1000行代码,这将使维护成为一项繁琐的任务!
  2. 因为我有示例xml,所以可以清空现有的值,然后通过宏使用用户输入的值(从excel单元数据中获取)更新xml。这看起来更有效,因为它可以节省1000行代码,但这有可能吗?由于需要更新的元素分布在xml中,我是否能够搜索元素并只更新该元素,而不会影响xml中的任何其他数据/标记?
  3. 可以用xsd做任何事情吗?我的要求没有闪现在我的脑海里
  4. 还有其他选择吗?

感谢你在这方面的任何帮助。谢谢!

EN

回答 1

Stack Overflow用户

发布于 2014-09-23 11:22:07

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

代码语言:javascript
复制
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中的文本。

如果你有更多的“片段”,你可以合并不同的文件。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25989764

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档