Код VBA не работает и возвращает пустое значение в Excel - PullRequest
0 голосов
/ 25 сентября 2019

HTML-код, из которого я хочу получить данные диапазона в свою книгу Excel

<div id="module_product_title_1" class="pdp-block module">
<div class="pdp-product-title">
<div class="pdp-mod-product-badge-wrapper">
<img src="laz-img-cdn.alicdn.com/tfs/…" class="pdp-mod-product-badge" alt="badge">
<span class="pdp-mod-product-badge-title" data-spm-anchor-id="a2a0e.pdp.0.i0.5b4b476dTBie86">Bosch WAW32560GC - Front Load Automatic Washing Machine - 9Kg
</span>
</div>
</div>
</div> 

VBA-код, который я использую для выполнения действия

For i = Sr To Er
DoEvents
MSXML.Open "GET", Sheet1.Range("A" & i).Value
MSXML.send
DoEvents
lr = i
DOC.body.innerHTML = MSXML.responseText
On Error Resume Next
Sheet2.Range("A" & lr).Value = DOC.getElementByTagName("span").Item(0).innerText.getElementByClassName("pdp -Product - Title").Item(0).innerText

1 Ответ

0 голосов
/ 25 сентября 2019

Нет такой вещи как .getElementByTagName.Вы ищете метод .getElementsByTagName() и он возвращает коллекцию элементов.

Также это:

DOC.getElementByTagName("span").Item(0).innerText.getElementByClassName("pdp -Product - Title").Item(0).innerText 

не имеет смысла, даже если используемый вами метод был правильным, потому что свойство .innerText элемента HTML будет возвращать строку, а не другуюHTML-элемент, из которого вы можете получить элементы по имени класса.

Чтобы получить доступ к элементу i-th из коллекции <span></span> элементов, вам нужно сделать это следующим образом:

DOC.getElementsByTagName("span")(i-1) 'indexing starts from 0

Чтобы получить внутренний текст этого элемента, вы используете соответствующее свойство этого элемента:

DOC.getElementsByTagName("span")(i-1).innerText

Если вы хотите, чтобы ваша ссылка была более конкретной, вы можете даже сделать это:

DOC.getElementById("module_product_title_1").getElementsByTagName("span")(i-1).innerText

Какиеозначает, что вы сначала находите уникальный элемент с идентификатором module_product_title_1, а затем «ищете» этот элемент для любых элементов <span></span> и получаете доступ к i-th этих элементов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...