Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
VBA namespaces не позволяет выполнить выборку по xml файлу
 
Здравствуйте. Следующий код должен выдавать количество подходящих узлов MeasurePoint, в которых поле Title содержит "Газ"
Код
Private Sub test()
Dim doc As MSXML2.DOMDocument
Dim nlist As MSXML2.IXMLDOMNodeList
Set doc = New MSXML2.DOMDocument
doc.setProperty "SelectionLanguage", "XPath"
doc.Load "d:\5.xml"
MsgBox doc.XML
Set nlist = doc.SelectNodes("//MeasurePoint[contains(Title,'Газ')]")
MsgBox "Matching Nodes : " & nlist.Length
End Sub
xml файл получаю по API, имеет вид:
Скрытый текст

При этом если <GetNodeByIdExtendedResult xmlns="http://www.lers.ru/website/api">; заменить на <GetNodeByIdExtendedResult>, то поиск выполняется
Что нужно добавить в коде, чтобы поиск выполнялся без модификации xml файла?
vba фильтр при использовании SelectNodes
 
Цитата
ocet p написал:
Эта строка у вас срабатывает ? А где кавычка (") после ' ""> ' ?
Потерялась при копировании кода на форум, при вставке часть строки заменяется на &quot;&quot;&gt;&quot;
Код
sEnv = sEnv & "<nodeId xmlns=""http://www.lers.ru/website/api"">" & id & "</nodeId>"
vba фильтр при использовании SelectNodes
 
С изменением на 6.0 столкнулся с проблемой, что в моем коде SelectNodes вообще перестал работать. Вот исходная часть
Код
Private Sub GetMeasurePointConsumption(id As String, startdate As String, enddate As String, Row As Integer)
Dim sEnv As String
Dim GMPC As New MSXML2.DOMDocument
Set GMPC = CreateObject("MSXML2.DOMDocument")
Set ObjHTTP = New MSXML2.XMLHTTP
Dim NodesSystemsId As MSXML2.IXMLDOMNodeList
Dim Q As MSXML2.IXMLDOMNode
Dim Q_summ As Double
Dim HeatId As New Collection
Dim AllDays As New Collection
Dim AllQ As New Collection
Dim QbyDay As New Collection
Dim DaysNodeElements As MSXML2.IXMLDOMNodeList
Dim QdeltaNodeElements As MSXML2.IXMLDOMNodeList
sURL = "http://192.168.68.119/api.asmx"
sEnv = "<?xml version=""1.0"" encoding=""utf-8""?>"
sEnv = sEnv & "<soap:Envelope xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance""; xmlns:xsd=""http://www.w3.org/2001/XMLSchema"" xmlns:soap=""http://schemas.xmlsoap.org/soap/envelope/"">"
sEnv = sEnv & "<soap:Body>"
sEnv = sEnv & "<nodeId xmlns=""http://www.lers.ru/website/api""> & id & "</nodeId>"
sEnv = sEnv & "<flags xmlns=""http://www.lers.ru/website/api"">Systems</flags"
sEnv = sEnv & "</soap:Body>"
sEnv = sEnv & "</soap:Envelope>"
ObjHTTP.Open "Post", sURL, False
ObjHTTP.setRequestHeader "Content-Type", "text/xml"
ObjHTTP.setRequestHeader "soapAction", "http://www.lers.ru/website/api/GetNodeByIdExtended"
ObjHTTP.send (sEnv)
GMPC.LoadXML ObjHTTP.responseText
MsgBox (GMPC.XML)
Set NodesSystemsId = GMPC.SelectNodes("//MeasurePoint")
MsgBox (NodesSystemsId.Length)
For i = 1 To NodesSystemsId.Length
    HeatId.Add (NodesSystemsId.Item(i - 1).FirstChild.Text)
Next
MsgBox (HeatId.Count)
End Sub

3 и 4 строки меняю на
Код
Dim GMPC As New MSXML2.DOMDocument60
Set GMPC = CreateObject("MSXML2.DOMDocument.6.0")
XML получаю через API
Изменено: mk12 - 08.02.2019 17:01:21
vba фильтр при использовании SelectNodes
 
Весь код не могу сюда выложить, как и xml, но такого примера должно быть достаточно:
Код
Private Sub test()
Dim GMPC As New MSXML2.DOMDocument
Dim Nodes As MSXML2.IXMLDomNodeList
    GMPC.Load "C:\new 4.xml"
    Set Nodes = GMPC.SelectNodes("//MyObject[Title!='Объект']")
    MsgBox Nodes.Length
End Sub

И вот здесь contains не отрабатывает

XML:

Скрытый текст
Изменено: mk12 - 08.02.2019 13:53:27
vba фильтр при использовании SelectNodes
 
Такую функцию пробовал, выдает неизвестный метод
Код
Set Nodes = GMPC.SelectNodes("//MyObject[contains (Title, 'Объект')]")

Скорее всего что-то не так в строке, но не ясно что

vba фильтр при использовании SelectNodes
 
Здравствуйте. Из xml файла нужно получить несколько элементов с определенным значением в поле Title (все элементы, у которых это поле не равно слову Объект), для этого используется такая строка:
Код
Set Nodes = GMPC.SelectNodes("//MyObject[Title!='Объект']")

Как нужно дополнить строку, чтобы исключить все элементы, в поле title которых может содержаться слово Объект  (т.е. вариант написания вроде "Объект 1", "Второй объект" и т.п.)

Перенос данных в Excel из API, Помогите выбрать путь реализации задачи
 
Его пока не рассматривал. Стоит того?

И ещё вопрос по PowerShell. Можно ли скрипт, написанный на нем запустить из Excel? В Excel будет несколько кнопок, по нажатию на которые должны выполнятся разные функции.
Перенос данных в Excel из API, Помогите выбрать путь реализации задачи
 
Цитата
JeyCi написал:
а через DDE поддерживает передачу данных
Про dde в описании программы ничего не нашел, скорее всего нет поддержки
Цитата
Игорь написал:
на том, в чем вы лучше разбираетесь
Powershell вообще новая вещь для меня, но когда узнал про её возможности стало интересно изучить. На VBA уже делал несколько проектов, но и в нем знания далеки от идеала.
Цитата
Игорь написал:
powershell поддерживает работу с cookies (поскольку работает с .Net) - но тут менее удобно будет взаимодействие с объектной моделью Excel
Объектная модель Excel не пугает, сложность в том, что никогда раньше не работал с какими-либо API и пока трудно представить, как реализовать требуемые запросы в VBA
Перенос данных в Excel из API, Помогите выбрать путь реализации задачи
 
Здравствуйте. Опишу задачу в общих чертах, нужна помощь с определением пути решения. В зависимости от рекомендаций, возможно, пойдут более конкретные вопросы. Есть таблица в Excel с большим количеством строк и столбцов. Данные для них нужно получить из сторонней программы. У программы имеется WEB API и Framework. На чем лучше реализовать подгрузку данных из программы в таблицу, vba или powershell? Для того, чтобы получить доступ через api обязательно требуется авторизация с поддержкой cookies на клиентской стороне.
Страницы: 1
Loading...