CallByName с несколькими уровнями свойств - PullRequest
0 голосов
/ 06 декабря 2018

Я хочу использовать CallByName в VBA для чтения конкретных данных с таких веб-страниц.Эти веб-страницы имеют различные структуры HTML.В моем случае есть элемент, который мне нужен для ссылки на 2 или 3 родительских узла и получения элемента с тегами или.Посмотрите код:

элемент на всех веб-страницах, которые я назвал MyElem

на одной веб-странице Мне нужен этот код:

MsgBox MyElem.parentElement.parentElement.parentElement.getelementsbytagname("tr")(3).innertext

на другой веб-странице Мне нужен этот код:

MsgBox MyElem.parentElement.parentElement.getelementsbytagname("div")(2).innertext

и так далее ...

Я хочу написать в VBA, как показано ниже:

Select Case Webpage
     Case "webpage_1"
        property ="parentElement.parentElement.parentElement.getelementsbytagname("tr")(3).innertext"
     Case "webpage_2"
        property = "parentElement.parentElement.getelementsbytagname("div")(2).innertext"

      ' and so on ...

 End Select

MsgBox CallByName(MyElem, property, VbGet)

Проблема в том, что CallByName не поддерживает несколько уровнейсвойств.Я прочитал похожую тему здесь , но это не помогает моему делу.Есть ли идея?

1 Ответ

0 голосов
/ 06 декабря 2018

Почему не это?

Dim res

Select Case Webpage
     Case "webpage_1"
        res = MyElem.parentElement.parentElement.parentElement.getelementsbytagname("tr")(3).innertext
     Case "webpage_2"
        res = MyElem.parentElement.parentElement.getelementsbytagname("div")(2).innertext

      ' and so on ...

 End Select

MsgBox res
...