我正在嘗試在我的作業簿中進行 XML 映射,并且我應該使用用戶將從這里匯入的這個 XML(如下所示) - 
<?xml version="1.0"?>
<metadata>
<sample>Hi</sample>
<metadata>
<data>
<main>
...
</main>
</data>
XML 只能有一個根標記,而上面的標記有兩個 - metadata& data- 所以我必須洗掉其中一個根標記,以使 XML 有效。我想洗掉metadata根標簽并保留資料標簽。因此,編輯后我的 XML 應該如下所示:
<?xml version="1.0"?>
<data>
<main>
...
</main>
</data>
是否可以通過 Excel VBA 編輯匯入的 XML?
將 XML 編輯為文本對我不起作用,因為我將與其他人共享 excel 檔案,而他們將無法編輯他們正在匯入的 XML。這就是為什么我要查看是否只匯入 XML,然后 VBA 為我編輯它...
uj5u.com熱心網友回復:
添加頂級以創建有效的 XML,然后選擇所需的節點。
Option Explicit
Sub ImportXML()
Dim fso As Object, ts As Object, doc As Object
Dim data As Object, filename As String
Dim ws As Worksheet
Set ws = ActiveSheet
' select file
With Application.FileDialog(msoFileDialogFilePicker)
If .Show <> -1 Then Exit Sub
filename = .SelectedItems(1)
End With
' read file and add top level
Set doc = CreateObject("MSXML2.DOMDocument.6.0")
Set fso = CreateObject("Scripting.FileSystemObject")
Set ts = fso.OpentextFile(filename)
doc.LoadXML doc.LoadXML Replace(ts.readall, "<metadata>", "<root><metadata>", 1, 1) & "</root>"
ts.Close
' import data tag only
Dim s as string
Set data = doc.getElementsByTagName("data")(0)
s = data.XML
MsgBox s
'ActiveWorkbook.XmlImportXml data.XML, ImportMap _
' :=Nothing, Overwrite:=True, Destination:=ws.Range("$A$1")
' show maps
'Dim msg As String, mp As XmlMap
'For Each mp In ThisWorkbook.XmlMaps
' msg = vbLf & mp.Name & " - " & mp.RootElementName
'Next
'MsgBox "XML Maps" & msg
End Sub
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/363071.html
