打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
excel中如何利用VBA批量生成XML文件

定义一个宏,代码如下:

  1. Sub SaveXML()  
  2.     If MsgBox("Are you sure create xml?", vbYesNo) = vbYes Then  
  3.       
  4.         ActiveWorkbook.Save  
  5.           
  6.         Dim xlsname, filepath  
  7.         xlsname = Left(ThisWorkbook.Name, Len(ThisWorkbook.Name) - 5)  
  8.         filepath = ThisWorkbook.Path  
  9.       
  10.         Dim objStream As Object  
  11.         Set objStream = CreateObject("ADODB.Stream")  
  12.           
  13.         objStream.Open  
  14.         objStream.Position = 0  
  15.         objStream.Charset = "UTF-8"  
  16.           
  17.         objStream.WriteText "<?xml version=""1.0"" encoding=""UTF-8"" standalone=""yes""?>" & vbCrLf  
  18.         objStream.WriteText "<" & xlsname & "> " & vbCrLf  
  19.           
  20.         For Each sh In ActiveWorkbook.Worksheets  
  21.             Dim rng As Range  
  22.             Set rng = sh.Range("A1")  
  23.               
  24.             Dim count1, count2, count3  
  25.             count1 = 2  
  26.             count2 = 2  
  27.             count3 = 0  
  28.             Dim columnName As String  
  29.           
  30.             If rng.Offset(1, 1) = "Child" Then  
  31.               
  32.             ElseIf rng.Offset(1, 1) = "" Then  
  33.                   
  34.                 objStream.WriteText vbTab & "<" & sh.Name & "s>" & vbCrLf  
  35.                    
  36.                 objStream.WriteText vbTab & "</" & sh.Name & "s>" & vbCrLf  
  37.             Else  
  38.                 objStream.WriteText vbTab & "<" & sh.Name & "s>" & vbCrLf  
  39.                
  40.                 Do While rng.Offset(count1, 0) <> ""  
  41.                     objStream.WriteText vbTab & vbTab & "<" & sh.Name  
  42.                       
  43.                     Do While rng.Offset(2, count3) <> ""  
  44.                         columnName = rng.Offset(1, count3)  
  45.                         If InStr(1, columnName, "_") <> 0 Then  
  46.                             objStream.WriteText " " & Right(columnName, Len(columnName) - InStr(1, columnName, "_")) & "=" & """"  
  47.                             objStream.WriteText rng.Offset(count1, count3) & """"  
  48.                         End If  
  49.                         count3 = count3 + 1  
  50.                     Loop  
  51.                     count3 = 0  
  52.                     objStream.WriteText "/>" & vbCrLf  
  53.       
  54.                     count1 = count1 + 1  
  55.                 Loop  
  56.                 MsgBox ("555555")  
  57.                 count1 = 2  
  58.                 count2 = 2  
  59.                   
  60.                 objStream.WriteText vbTab & "</" & sh.Name & "s>" & vbCrLf  
  61.             End If  
  62.         Next  
  63.         objStream.WriteText "</" & xlsname & ">" & vbCrLf  
  64.           
  65.         objStream.SaveToFile filepath + "\" + xlsname + ".xml", 2  
  66.         objStream.Close  
  67.           
  68.         Set objStream = Nothing  
  69.     End If  
  70. End Sub  


本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
非常实用asp日历代码
VB MsgBox 函数使用
Word 使用宏根据文件名实现文件版本号自动更新
Excel 如何用代码获得计算机的主机编号!
MSGBOX
按键 使用WinHttp实现POST方式用户模拟登录网站
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服