У меня есть XML из схемы IPC1752, где я должен заполнить значения в соответствии с моим паспортом Excel. поэтому я должен сделать эти вещи
1. загрузить XML в мой VBA
2. измените желаемое значение в XML на значения, которые я храню в ячейке Excel
3. сохранить измененный XML в папку
'Sub UpdateXML ()
Вызовите fnUpdateXMLByTags
End Sub
Функция fnUpdateXMLByTags ()
Dim mainWorkBook As Workbook
Dim wrsht As Worksheet
Set mainWorkBook = ActiveWorkbook
Set wrsht = mainWorkBook.Sheets("Sheet1")
wrsht.Activate
Dim oXMLFile As MSXML2.DOMDocument60
Set oXMLFile = New MSXML2.DOMDocument60
oXMLFile.async = False
oXMLFile.validateOnParse = False
XMLFileName = "Z:\IPC\IPC1752A_WK-200264-000 - Copy.xml"
For i = 3 To 5
If Not IsEmpty(mainWorkBook.Sheets("Sheet1").Range("A" & i)) Then
PartID = mainWorkBook.Sheets("Sheet1").Range("A" & i).Value
PartName = mainWorkBook.Sheets("Sheet1").Range("B" & i).Value
MaterialName = mainWorkBook.Sheets("Sheet1").Range("D" & i).Value
MassAmount = mainWorkBook.Sheets("Sheet1").Range("F" & i).Value
MassUnit = mainWorkBook.Sheets("Sheet1").Range("G" & i).Value
Path = "D:\New folder\" & PartID & ".xml"
If oXMLFile.Load(XMLFileName) Then
Set PartIDNodes = oXMLFile.SelectNodes("//@itemNumber")
Set PartNameNodes = oXMLFile.SelectNodes("//@itemName")
Set MaterialNameNodes = oXMLFile.SelectNodes("//@name")
Set MassAmountNodes = oXMLFile.SelectNodes("//@value")
Set MassUnitNodes = oXMLFile.SelectNodes("//@UOM")
PartIDNodes(0).NodeValue = Part_ID
PartNameNodes(0).NodeValue = PartName
MaterialNameNodes(5).NodeValue = MaterialName
MassAmountNodes(1).NodeValue = MassAmount
MassUnitNodes(1).NodeValue = MassUnit
Set ParentNodes = oXMLFile.SelectNodes("//Substance")
MsgBox ParentNodes.Length '->is showing zero
End If
End If
Next i
End Function
здесь, когда я использую selectnodes (атрибуты), он работает [пример: oXMLFile.SelectNodes ("// @ itemName")]
но не работает, когда я использую selectnodes (elements) [пример: oXMLFile.SelectNodes ("// Substance")]]
пожалуйста, помогите.
Вот XML https://www.jiocloud.com/s/?t=SzqFJhEABfsTQfZW&s=a2