Автоматическое заполнение динамически генерируемых рабочих листов из XML

Это будет работать:

/^(()?\d{3}())?(-|\s)?\d{3}(-|\s)?\d{4}$/

Символ ? означает, что предыдущая группа должна совпадать с нулем или один раз. Группа (-|\s) будет соответствовать символу - или |. Добавление ? после второго появления этой группы в вашем регулярном выражении позволяет вам сопоставить последовательность из десяти последовательных цифр.

0
задан Badja 18 March 2019 в 17:41
поделиться

1 ответ

Примерно так (проверено):

Dim questions As MSXML2.IXMLDOMNodeList, question As MSXML2.IXMLDOMNode
Dim genre

Set questions = oXMLFile.SelectNodes("/catalog/query")

For Each question In questions
    genre = ChildValue(question, "genre")
    If Len(genre) > 0 Then
        With eWorkbook.Sheets(genre).Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).EntireRow
            .Cells(1).Value = ChildValue(question, "question")
            .Cells(2).Value = ChildValue(question, "answer")
            .Cells(3).Value = ChildValue(question, "comment")
        End With
    End If
Next question

Утилита для получения значений дочерних узлов:

Function ChildValue(n As MSXML2.IXMLDOMNode, childName As String)
    Dim el, rv
    Set el = n.SelectSingleNode(childName)
    If Not el Is Nothing Then rv = el.nodeTypedValue
    ChildValue = rv
End Function
0
ответ дан Tim Williams 18 March 2019 в 17:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: