Распарсить xml в vba-макросе
От: Mihas  
Дата: 01.09.10 11:12
Оценка:
Встала такая задача.
Нужно написать макрос к экселевской таблице, чтоб открывал xml и раскладывал содержимое по таблице.
Подскажите, плиз, где почитать по теме?
Пока не понятно: можно ли затянуть xml в какой-нибудь объект навроде XDocument в C#? Или, может быть, можно десериализовать xml в объект класса?

Заранее прошу прощения за бестолковые вопросы. Дела с VBA раньше не имел.
Re: Распарсить xml в vba-макросе
От: ZAMUNDA Земля для жалоб и предложений
Дата: 01.09.10 18:34
Оценка:
Здравствуйте, Mihas, Вы писали:


M>Нужно написать макрос к экселевской таблице, чтоб открывал xml и раскладывал содержимое по таблице.

M>Подскажите, плиз, где почитать по теме?
Microsoft Core XML Services (MSXML) с SDK скачиваешь и читаешь ихний help.

M>Пока не понятно: можно ли затянуть xml в какой-нибудь объект навроде XDocument в C#? Или, может быть, можно десериализовать xml в объект класса?

можно, и в оч. похожий на .Net'овский
    Dim clsXDoc As Object ' Dim clsXDoc As MSXML2.DOMDocument60
    
    Set clsXDoc = CreateObject("MSXML2.DOMDocument.6.0") ' Set clsXDoc = new MSXML2.DOMDocument60
    
    If clsXDoc.Load("...\Notepad++\config.xml") Then
        Dim clsXNode As Object ' Dim clsXNode As MSXML2.IXMLDOMNode
        
        Set clsXNode = clsXDoc.selectSingleNode("//GUIConfig[@name='ToolBar']")
        
        If Not clsXNode Is Nothing Then
            MsgBox clsXNode.nodeName & "=" & clsXNode.Text
        End If
    Else
        MsgBox "Err!"
    End If

Чтоб вместо CreateObject использовать то, что закоментировано, надо лезть в tools->references и там подключать "Microsoft XML, 6.0". По умолчанию в системе уже есть "Microsoft XML, x.x", но они от версии к версии разные немного, и ранние версии с багами и тормознутее, и по умолчанию help'а нет, но ничё ставить ненадо — так что сам решай.
Наука изощряет ум; ученье вострит память.
(c) Козьма Прутков
Re[2]: Распарсить xml в vba-макросе
От: Mihas  
Дата: 02.09.10 04:10
Оценка:
Здравствуйте, ZAMUNDA, Вы писали:

Спасибо большое! Займусь.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.