ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > E问E答 > Excel VBA > 非常规XML(.pxml)文件的批量导入更新

非常规XML(.pxml)文件的批量导入更新

作者:绿色风 分类: 时间:2022-08-17 浏览:115
楼主
嘉昆2011
问题描述:
对于游戏数据生成的*.pxml文件如何批量在Excel工作簿中更新?

对于常规的XML文件批量导入更新,可以利用Excel本身自带的XML映射功能完成,具体可以参考:
如何批量导入XML文件:
  1. http://www.exceltip.net/forum.php?mod=viewthread&tid=39327&fromuid=88828
对于非常规XML文件可以尝试以下几种方法:
1,XMLImport映射功能,参考K版的帖子:
如何利用vba代码批量导入xml文件信息?
  1. http://www.exceltip.net/forum.php?mod=viewthread&tid=26251&fromuid=21112
  1. Sub TestXMLImport()
  2. Dim N As Long, myFile As String, myPath As String, map As XmlMap
  3. Application.ScreenUpdating = False
  4. Application.DisplayAlerts = False
  5. Sheet2.[A1].CurrentRegion.Clear
  6. myPath = ThisWorkbook.Path & "\"
  7. myFile = Dir(myPath & "*.pxml")

  8. N = 1
  9. Do While myFile <> ""
  10.     ThisWorkbook.XMLImport myPath & myFile, Nothing, False, Sheet2.Cells(N, 1)
  11.     N = N + 1
  12.     myFile = Dir
  13. Loop

  14. For Each map In ThisWorkbook.XmlMaps
  15.     map.Delete
  16. Next map

  17. Sheet2.Range("A:B,D:F,H:N,Q:T,DI:FF").Delete
  18. Columns.AutoFit
  19. Application.DisplayAlerts = True
  20. Application.ScreenUpdating = True

  21. End Sub
该方法在批量导入.pxml文件时速度较慢,会出现假死现象。

2,创建XMLHTTP对象导入,参考弦月版主帖子:
使用XMLHTTP批量导入XML文件
  1. http://www.exceltip.net/forum.php?mod=viewthread&tid=26245&fromuid=30639
  1. Sub TestXMLHTTP()
  2. Dim tmp, i As Integer, XMLHTTP As Object, N As Long, myFile As String, myPath As String
  3.    
  4. Application.ScreenUpdating = False
  5. Sheet3.[A1].CurrentRegion.Clear
  6. myPath = ThisWorkbook.Path & "\"
  7. myFile = Dir(myPath & "*.pxml")

  8. Set XMLHTTP = CreateObject("Microsoft.XMLHTTP")
  9. N = 1
  10. Do While myFile <> ""
  11.    
  12. XMLHTTP.Open "GET", myPath & myFile, False
  13. XMLHTTP.send
  14. tmp = Split(Replace(XMLHTTP.responseText, """", ""), "Value=")

  15. For i = 1 To UBound(tmp)
  16.     Sheet3.Cells(N, i) = Trim(Split(tmp(i - 1), "/>")(0))
  17. Next i
  18. Erase tmp

  19. N = N + 1
  20. myFile = Dir
  21. Loop

  22. Sheet3.Range("A:B,D:F,H:N,Q:T,DI:FF").Delete
  23. Set XMLHTTP = Nothing
  24. Application.ScreenUpdating = True
  25. Columns.AutoFit

  26. End Sub
该方法在批量导入.pxml文件时速度较快。

3,创建XMLDoc对象批量导入,参考书目:《Excel VBA与XML、 ASP协同应用》
  1. Sub TestLoadXMLDOC()
  2. Dim XMLDOC As MSXML2.DOMDocument30, tmp, N As Long, myFile As String, myPath As String
  3. Set XMLDOC = New MSXML2.DOMDocument30
  4. XMLDOC.async = False

  5. Sheet4.[A1].CurrentRegion.Clear
  6. myPath = ThisWorkbook.Path & "\"
  7. myFile = Dir(myPath & "*.pxml")

  8. N = 1
  9. Do While myFile <> ""
  10. If XMLDOC.Load(myPath & myFile) Then
  11.     tmp = Split(Replace(XMLDOC.XML, """", ""), "Value=")
  12.     For i = 1 To UBound(tmp)
  13.         Sheet4.Cells(N, i) = Trim(Split(tmp(i - 1), "/>")(0))
  14.     Next i
  15.     Erase tmp
  16. End If
  17. N = N + 1
  18. myFile = Dir
  19. Loop

  20. Sheet4.Range("A:B,D:F,H:N,Q:T,DI:FF").Delete
  21. Set XMLDOC = Nothing
  22. Columns.AutoFit

  23. End Sub
该方法在批量导入.pxml文件时速度也十分快。


附件:

Kaiserslautern.rar




2楼
水星钓鱼
优秀帖子
3楼
老糊涂
学习

免责声明

有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素, 经与ExcelTip.Net站长Apolloh商议并征得其同意, 现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示, 供有需要的人士查询使用,也慰缅曾经的论坛时代。 所示各个帖子的原作者如对版权有异议, 可与本人沟通提出,或于本站点留言,我们会尽快处理。 在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一

评论列表
sitemap