【问题标题】:Importing XML using VBA. Each tag line on seperate cell使用 VBA 导入 XML。单独单元格上的每个标记行
【发布时间】:2017-06-05 12:26:11
【问题描述】:

我目前正在尝试编写一些将 XML 文件导入我的电子表格的 VBA。我目前有以下内容,但是,所有的 XML 都进入一个单元格。无论如何我可以让每个标签进入一个单独的单元格吗? (见附图)

Ideal Macro

Dim filter As String 
Dim caption As String
Dim Filename As String 
Dim Overall As Workbook 
Dim targetWorkbook As Workbook

    Set targetWorkbook = Application.ActiveWorkbook

    filter = "Text files (*.xml),*.xlsm " caption = "Please Select an input file " Filename = Application.GetOpenFilename(filter, , caption)

    Set Overall = Application.Workbooks.Open(Filename)

         Set wb = Workbooks.OpenXML(Filename:=strTargetFile, LoadOption:=xlXmlLoadImportToList)
         Application.DisplayAlerts = True

         wb.Sheets(1).UsedRange.Copy ThisWorkbook.Sheets("Sheet2").Range("A1")
         wb.Close False
         Application.ScreenUpdating = True
         Overall.Close

【问题讨论】:

  • 此代码是否呈现屏幕截图输出? Workbooks.OpenXML 将 XML 值映射到单元格。没有标签/属性标记显示,只有数据。
  • 它没有。屏幕截图是我希望它看起来的样子。目前它将所有文本输出到一个单元格中。我还尝试了您提供的网站上的代码,并且效果类似。不过谢谢!

标签: xml vba excel import


【解决方案1】:

如果您的 XML 文件在每个 XML 标记后使用适当的新行进行格式化,那么应该这样做:

  Dim fso As New Scripting.FileSystemObject

  Dim xmlFile As Scripting.File
  Set xmlFile = fso.GetFile(Filename)

  Dim ts As Scripting.TextStream
  Set ts = xmlFile.OpenAsTextStream(ForReading)

  Dim i As Long: i = 2
  Dim ws as Worksheet
  Set ws = Workbooks("OutputWorkbook").Worksheets("OutputSheet")

  While Not ts.AtEndOfStream
        ws.Cells(i, 1).Value = ts.ReadLine
        i = i + 1
  Wend

  ts.Close
  Set ts = Nothing

需要对 Microsoft Scripting Runtime 的引用,并且您可能需要调整整体代码以将文本放置在您需要的位置...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-08-13
    • 2014-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-30
    • 2019-02-06
    • 1970-01-01
    相关资源
    最近更新 更多