powered by simpleCommunicator - 2.0.54     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / IXMLDOMNode.Attributes
4 сообщений из 4, страница 1 из 1
IXMLDOMNode.Attributes
    #37304427
aleha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В экселевском макросе имеется функция с примерно таким кодом:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
Dim vNodeTable As IXMLDOMNode
For Each vNodeTable In vDocEstInfo.selectNodes("/" & sRootNode & "/*")
Select Case vNodeTable.nodeName
    Case '''''''
         '''''''
         For Each vAttribute In vNodeTable.Attributes
         ''''''''''''''''''''''''''''''
    Next vAttribute
End Select
Next vNodeTable

в vNodeTable данные загружаются.
vNodeTable.nodeName - работает, а вот дальше при попытке доступа к Attributes или childNodes.Length происходит compile error и On Error не отлавливает её. При этом через Watch могу посмотреть и содержание всех аттрибутов и детей. При этом как я понял на 2000 офисе это всё работало, а на 2007 начало выдавать такую ерунду. Если закомментить строки обращения к этим параметрам, то compile error не происходит. В чем может быть причина? Может появились новые функции доступа к параметрам? googlить пробовал, голову уже сломал.
...
Рейтинг: 0 / 0
IXMLDOMNode.Attributes
    #37304438
aleha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Немного дополню:
ошибка которая возникает:
Compile error
Function or interface marked as restricted or uses a type not supported in Visual Basic
на момент входа в функцию.
Если во время отладки, комментировать тревожащий компилятор код, то отладчик работает дальше, если разкомментить, то соответственно ошибка.
...
Рейтинг: 0 / 0
IXMLDOMNode.Attributes
    #37304769
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Создайте чистый проект в экселе и повторите ситуацию. Если сработает, ищите отличия, если нет — выкладывайте.
...
Рейтинг: 0 / 0
IXMLDOMNode.Attributes
    #37308747
aleha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
повторить и выложить достаточно тяжело, так как экселевский документ со скриптами весит более мегабайта (учитывая что самих таблиц там только один маленький лист) и всё это добро, которое в нем творится я не до конца понимаю.
Но, что касается озвученного выше вопроса, нашел странное решение:
Раз удается получить nodeName, то значит нода существует, то следующим кодом удается получить список аттрибутов без ошибки:

Dim oNamedNodeMap As IXMLDOMNamedNodeMap
Set xmlNodeList = vDocEstInfo.getElementsByTagName(nodeName)
If xmlNodeList.Length > 0 Then
Set oNamedNodeMap = vDocEstInfo.getElementsByTagName(nodeName).Item(0).Attributes
If Not IsNull(oNamedNodeMap) Then
For Each vAttribute In oNamedNodeMap
''''''''''''''''''''
Next vAttribute
end if

Баг ли это.... или непонятно что или решение таится в закрытых секциях мсдн...
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / IXMLDOMNode.Attributes
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]