У меня есть следующий XML-файл, в котором я хочу извлечь определенные атрибуты XML, а затем поместить эти атрибуты в файл excel.Извлечение нескольких атрибутов XML в Excel
Ниже мой XML-файл
<?xml version="1.0"?>
<RECIPE xmlns="x-schema:recipe_schema.xml" Format="1.0" Name="Table1>
<STEP ChLocation="CH1"/>
<ENDPOINT/><ENDP_DEVICE Type=""/>
<PARAMS_STEP>
<REGULAR>
<PARAM Alias="Offset1" Name="Offset_1" Value="0"/>
<PARAM Alias="Offset2" Name="Offset_2" Value="-3.59"/>
<PARAM Alias="Offset3" Name="Offset_3" Value="0" />
<PARAM Alias="Offset4" Name="Offset_4" Value="5.56"/>
<PARAM Alias="Offset5" Name="Offset_5" Value="0"/>
<PARAM Alias="Offset6" Name="Offset_6" Value="-3.25"/>
<PARAM Alias="Offset7" Name="Offset_7" Value="4.66"/>
Мой код ниже находит все атрибуты узлов (0) и (2) - и это здорово. Я могу debug.print в ближайшее окно.
Проблема возникает, когда я пытаюсь экспортировать их в excel. У меня нет проблемы с извлечением атрибута (0), потому что имя строки является постоянным. Однако я не знаю, как извлечь атрибут (2), потому что значение будет изменяться на регулярной основе, поэтому я не могу напрямую ссылаться на значение.
Я пытался исследовать, как сохранить атрибут (2) в качестве переменной, а затем вызвать эту переменную, но все, что я мог найти, это информация о переменной XSLT, и я не был уверен в синтаксисе VBA, чтобы заставить это работать. Я уже несколько дней занимаюсь исследованиями, но не могу понять. Все, что я вижу в Интернете, касается буквальной ценности.
Я хотел бы экспортировать атрибут (0) и связанный с ним атрибут (2) в таблицу excel. Колонка 1 = Attribute (0) = OffsetX и Колонна 2 = Attribute (0) = Valuex
Что является лучшим способом для извлечения и экспорта атрибутов (2), чтобы преуспеть, так как я не могу сразу назвать значение?
Благодарим за любую помощь заранее - я действительно ценю это.
VBA код ниже
Sub GetOffsetName_And_Values()
Dim GetOffsets As ThisWorkbook
Dim objXML As MSXML2.DOMDocument60
Set objXML = New MSXML2.DOMDocument60
Dim xmlNodeList As MSXML2.IXMLDOMNodeList
Dim xmlNode As MSXML2.IXMLDOMNode
Dim strXML As String
Dim x As IXMLDOMNode
objXML.validateOnParse = False
strXML = "L:\Recipe\File.xml"
objXML.Load (strXML)
Set xmlNodeList = objXML.getElementsByTagName("*")
On Error Resume Next
For Each xmlNode In xmlNodeList
Debug.Print xmlNode.Attributes(0).Text
Debug.Print xmlNode.Attributes(2).Text
Next xmlNode
If xmlNode.Attributes(0) = "Offset1" Then ThisWorkbook.Sheets("Sheet2").Range("A2") = "Offset1"
If xmlNode.Attributes(0) = "Offset2" Then ThisWorkbook.Sheets("Sheet2").Range("A3") = "Offset2"
If xmlNode.Attributes(0) = "Offset3" Then ThisWorkbook.Sheets("Sheet2").Range("A4") = "Offset3"
If xmlNode.Attributes(0) = "Offset4" Then ThisWorkbook.Sheets("Sheet2").Range("A5") = "Offset4"
If xmlNode.Attributes(0) = "Offset6" Then ThisWorkbook.Sheets("Sheet2").Range("A6") = "Offset6"
If xmlNode.Attributes(0) = "Offset7" Then ThisWorkbook.Sheets("Sheet2").Range("A7") = "Offset7"
Set objXML = Nothing
End Sub
* потому что значение будет меняться на регулярной основе * ... номер значения сам или имя ** Значение ** изменится? – Parfait
Не связанный с вопросом, но подумайте о замене всех этих операторов 'IF' на эту единственную строку:' ThisWorkbook.Sheets («Sheet2»). Range («A» & Right (xmlNode.Attributes (0) », 1) .Value = xmlNode. Атрибуты (0) .Text' –
Число меняется. Например, сейчас Alias = «Offset1» и Value = «0», но число меняется каждую неделю, поэтому на следующей неделе это может быть Alias = «Offset1» и Value = «2.5». – mplh2008