如何使用VBA从XML文件提取数据到Excel表格

10

我使用以下代码从XML中提取数据到Excel。但问题是,结果会在一个新的工作簿 "Book1" 中打开。但我希望将结果放在同一Excel中具有此宏的特定工作表中。
请注意,我不想在代码中创建模式,因为所有XML的模式都会更改。下面提到的代码不需要指定模式。它可以将结果转储到新的Excel工作表中,并具有适当的列名。所以,请告诉我如何将结果放在同一工作簿的sheet2中?

Sub ImportXMLtoList()
 Dim strTargetFile As String
 Application.DisplayAlerts = False
 strTargetFile = "C:\example.xml"
 Workbooks.OpenXML Filename:=strTargetFile, LoadOption:=xlXmlLoadImportToList
 Application.DisplayAlerts = True

End Sub
2个回答

20
Sub ImportXMLtoList()
Dim strTargetFile As String
Dim wb as Workbook

     Application.Screenupdating = False
     Application.DisplayAlerts = False
     strTargetFile = "C:\example.xml"
     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


End Sub

1
嗨,Tim,非常感谢……这个有效了:)。是我的问题,我没有正确指定工作表名称。 - tester
谢谢,这对我帮助很大。但是对我来说,xlXmlLoadImportToList引起了错误。我尝试了xlXmlLoadPromptUser,并发现只读选项可行,我发现它是LoadOption:=xlXmlLoadOpenXml。然后就可以了。再次感谢。 - MichaelE

0
我创建了一个简单的XML映射。 我需要一段代码将XML数据导入Excel(右键-XML导入),从一个XML或另一个中获取数据。 我想保留我创建的XML映射,并仅将我的xlxs中的数据替换为来自另一个xlm的数据。
'Select the file
Fname = Application.GetOpenFilename(FileFilter:="xml files (*.xml), *.xml", MultiSelect:=False)

'Check if file selected
If Fname = False Then
    Exit Sub
    Else
Workbooks.Open Filename:=Fname
End If

非常好...即使在2021年仍然表现良好。 - Harry S

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接