Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 3233|回复: 8

[已解决]vba输出xml文件

[复制链接]
发表于 2017-4-24 16:15 | 显示全部楼层 |阅读模式
本帖最后由 france723 于 2017-4-24 21:30 编辑

如图EXCEL所示, 在工作表"01"中有A,B两列信息 (内容可变) . A列为<Num>, B列为<Name>.
现在想用vba输出xml文件, 如图XML所示.
跪求大神帮忙vba输出xml文件

最佳答案
2017-4-24 16:59

  1. Sub SaveXML()
  2.     If MsgBox("Are you sure create xml?", vbYesNo) = vbYes Then
  3.         ActiveWorkbook.Save
  4.         Dim xlsname, filepath
  5.         Dim irow%, icol%
  6.         xlsname = Left(ThisWorkbook.Name, Len(ThisWorkbook.Name) - 5)
  7.         filepath = ThisWorkbook.Path
  8.         Dim objStream As Object
  9.         Set objStream = CreateObject("ADODB.Stream")
  10.         objStream.Open
  11.         objStream.Position = 0
  12.         objStream.Charset = "UTF-8"
  13.         objStream.writetext "<?xml version=""1.0"" encoding=""UTF-8"" standalone=""yes""?>" & vbCrLf
  14.         objStream.writetext "<Formats> " & vbCrLf
  15.         For irow = 1 To Cells(Rows.Count, 1).End(3).Row
  16.             objStream.writetext vbTab & "<Format>" & vbCrLf
  17.             objStream.writetext vbTab & vbTab & "<Num>" & Cells(irow, 1) & "</Num>" & vbCrLf
  18.             objStream.writetext vbTab & vbTab & "<Name>" & Cells(irow, 2) & "</Name>" & vbCrLf
  19.             objStream.writetext vbTab & "</Format>" & vbCrLf
  20.         Next
  21.         objStream.writetext "</Formats>" & vbCrLf
  22.          
  23.         objStream.SaveToFile filepath + "" + xlsname + ".xml", 2
  24.         objStream.Close
  25.         Set objStream = Nothing
  26.     End If
  27. End Sub
复制代码
EXCEL.PNG
XML.PNG

123.zip

10.02 KB, 下载次数: 17

发表于 2017-4-24 16:32 | 显示全部楼层
回复

使用道具 举报

发表于 2017-4-24 16:33 | 显示全部楼层
回复

使用道具 举报

 楼主| 发表于 2017-4-24 16:40 | 显示全部楼层
QCW911 发表于 2017-4-24 16:32
有现成的函数,查查Excel转换XML

这是我Project的一部分, 想用VBA来实现. 但还是谢谢你
回复

使用道具 举报

发表于 2017-4-24 16:59 | 显示全部楼层    本楼为最佳答案   

  1. Sub SaveXML()
  2.     If MsgBox("Are you sure create xml?", vbYesNo) = vbYes Then
  3.         ActiveWorkbook.Save
  4.         Dim xlsname, filepath
  5.         Dim irow%, icol%
  6.         xlsname = Left(ThisWorkbook.Name, Len(ThisWorkbook.Name) - 5)
  7.         filepath = ThisWorkbook.Path
  8.         Dim objStream As Object
  9.         Set objStream = CreateObject("ADODB.Stream")
  10.         objStream.Open
  11.         objStream.Position = 0
  12.         objStream.Charset = "UTF-8"
  13.         objStream.writetext "<?xml version=""1.0"" encoding=""UTF-8"" standalone=""yes""?>" & vbCrLf
  14.         objStream.writetext "<Formats> " & vbCrLf
  15.         For irow = 1 To Cells(Rows.Count, 1).End(3).Row
  16.             objStream.writetext vbTab & "<Format>" & vbCrLf
  17.             objStream.writetext vbTab & vbTab & "<Num>" & Cells(irow, 1) & "</Num>" & vbCrLf
  18.             objStream.writetext vbTab & vbTab & "<Name>" & Cells(irow, 2) & "</Name>" & vbCrLf
  19.             objStream.writetext vbTab & "</Format>" & vbCrLf
  20.         Next
  21.         objStream.writetext "</Formats>" & vbCrLf
  22.          
  23.         objStream.SaveToFile filepath + "" + xlsname + ".xml", 2
  24.         objStream.Close
  25.         Set objStream = Nothing
  26.     End If
  27. End Sub
复制代码

评分

参与人数 1 +12 收起 理由
ghostjiao + 12 版主好厉害

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2017-4-24 17:17 | 显示全部楼层
本帖最后由 france723 于 2017-4-24 17:22 编辑

老师,您的代码很好用. 有三个小问题希望你能修改一下:
  • 第二行<Config Version="1">没有写入
  • 保存的时候, 自定义保存地点和文件名字 (就像我们平时保存文档)
  • 文档很多工作表, 只在"01"这一页执行这个操作


回复

使用道具 举报

发表于 2017-4-24 17:23 | 显示全部楼层
france723 发表于 2017-4-24 17:17
老师,您的代码很好用. 有三个小问题希望你能修改一下:
  • 第二行没有写入
  • 保存的时候, 自定义保存地 ...

  • 这个小问题就自己改了吧,自定义另存的代码那么多,还有version那个自己在外层加入进去就可以了
    回复

    使用道具 举报

     楼主| 发表于 2017-4-24 21:07 | 显示全部楼层
    Excel学徒123 发表于 2017-4-24 17:23
    这个小问题就自己改了吧,自定义另存的代码那么多,还有version那个自己在外层加入进去就可以了

    版主, version那个和<MachineName>BW46</MachineName> 加入, 没有达到预计效果.
    新手求帮助
    回复

    使用道具 举报

    发表于 2017-4-25 08:15 | 显示全部楼层
    france723 发表于 2017-4-24 21:07
    版主, version那个和BW46 加入, 没有达到预计效果.
    新手求帮助

    vbtab的原因吧,自己找找
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

    GMT+8, 2024-5-8 03:24 , Processed in 0.395417 second(s), 13 queries , Gzip On, Yac On.

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.

    快速回复 返回顶部 返回列表