Страницы: 1
RSS
Преобразование XML в текст
 
Здравствуйте.  
Есть XML файл. Нужно открыть его, с помощью VBA как текст, но без служебной информации (теги и т.п.), только полезные данные. Вопрос: как это можно сделать, есть ли функция?
 
в 2007 - вкладка разработчик - импортxls  
в 2003 - сервис-данные-импортxls
 
Мне нужно не импортировать на лист, а открыть файл XLS и сохранить (или присвоить переменной) данные в чистом виде (без тегов). Зачем самому создать процедуру, если есть готовая, ведь сохраняется XML документ как текст.
 
Извините, нужно: "а открыть файл XML"
 
.
Я сам - дурнее всякого примера! ...
 
KukLP в ваше примере данные вставляются на Рабочий лист, а мене нужно вставить, в VBA, в переменную.
 
На днях обсуждали. Тут рядом пара вариантов есть:  
http://www.programmersforum.ru/showthread.php?t=166466  
http://www.excelworld.ru/forum/2-814-1  
 
Вот одна из функций:  
 
Private Function FindTag$(ByRef ff, ByRef sTag$)    
 
With CreateObject("Microsoft.XMLDOM")    
.async = "false"    
.Load (ff)    
FindTag = .getElementsByTagName(sTag).Item(0).Text    
End With    
 
End Function
 
Или вот похожая от doober'a, чуть для другого значения, пусть и тут будет:  
 
Private Sub CommandButton1_Click()  
Dim sXpath As String  
sXpath = "//Parcel"  
sFile = "C:\doc6043466.xml"  
 
 With CreateObject("MSXML2.DOMDocument")  
  .Load sFile  
Read_t = .DocumentElement.SelectNodes(sXpath)(0).Attributes(0).NodeValue  
 End With  
 MsgBox Read_t  
End Sub
 
Вроде так работает - весь текст вне тегов:  
 
Sub Макрос2()  
Dim s$  
With CreateObject("Microsoft.XMLDOM")  
   .async = False  
   .Load ("c:\temp\ПРИМЕР.xml")  
   s = .Text  
End With  
Debug.Print s  
End Sub
 
http://www.tek-tips.com/viewthread.cfm?qid=1444524&page=8  
http://www.tek-tips.com/viewthread.cfm?qid=1444524&page=8  
 
надо использовать библиотеку Microsoft XML (версия хоть 3.0 хоть 6.0)  
если в referensax нету надо скачать - (есть на сайте cbr.ru - ссылки уже на этом форуме давал - можно найти)  
имеем xml  
пример  
<?xml version="1.0" encoding="windows-1251"?>  
<Файл ВерсФорм ="5.01" >  
         <Документ ДатаДок="27.09.2011" ОтчетГод="2011">  
    </Документ>  
</Файл>  
 
 
Public Sub xml()  
Dim x As String  
Dim xml_doc As New DOMDocument  
xml_doc.Load "C:\xml.xml"    
Set NodeList = xml_doc.SelectNodes("//Файл/Документ")  
For Index = 0 To NodeList.Length - 1 '  
     Set xmlNode = NodeList.Item(Index).CloneNode(True)  
     Set node_attr = xmlNode.Attributes(0) 'Дата документа  
      x = node_attr.Value '  
      Set node_attr = xmlNode.Attributes(1) 'Год документа  
      y = node_attr.Value '  
Next Index  
End Sub
 
Тогда уж лучше так - без библиотек, но зато работает :)  
Т.е. используем то, что уже есть в системе.  
У меня по крайней мере так заработало, ничего не меняя в референсах.  
 
Public Sub xml()  
Dim x As String  
With CreateObject("Microsoft.XMLDOM")  
.Load "C:\xml.xml"  
Set NodeList = .SelectNodes("//Файл/Документ")  
...  
...  
далее без изменений.
 
Всем большое спасибо! Решил вопрос.
Страницы: 1
Читают тему
Наверх