Скопируйте данные соскоба на другой лист - PullRequest
0 голосов
/ 22 февраля 2019

Я использую приведенный ниже код для очистки части данных с веб-страницы.

Sub Scrape()

Set HTML_Content = CreateObject("htmlfile")

'Get the WebPage Content to HTMLFile Object
With CreateObject("msxml2.xmlhttp")
    .Open "GET", Range("M4"), False 'Cell that contains hyperlink
    .send
    HTML_Content.body.innerHTML = .responseText
End With

'Add New Worksheet
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets.Add(After:= _
         ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count))
ws.Name = "ESTIMATE"


'Scrape Description
HTML_Content.getElementsByTagName ("div")
Debug.Print HTML_Content.getElementsByTagName("p")(0).innerText
End Sub

В последней строке Debug.Print HTML_Content.getElementsByTagName("p")(0).innerText печатается текст (это предложение), который мне требуется на экране отладки безлюбые проблемы.

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

HTML_Content.getElementsByTagName ("div")
text = HTML_Content.getElementsByTagName("p")(0).innerText
text.Copy Destination:=Sheets(1).Range("L4")

Также я пробовал:

Dim test As Range
HTML_Content.getElementsByTagName ("div")
Set text = HTML_Content.getElementsByTagName("p")(0).innerText
text.Copy Destination:=Sheets(1).Range("L4")

И также:

HTML_Content.getElementsByTagName ("div")
HTML_Content.getElementsByTagName("p")(0).innerText.Copy Destination:=Sheets(1).Range("L4")

Каждый раз, когда я получаю сообщение об ошибкепри попытке скопировать сообщение «Runtime 424: Object Required»

Любой совет о том, как решить эту проблему, будет очень полезен.

Ответы [ 2 ]

0 голосов
/ 22 февраля 2019

Более быстрый метод - использовать селектор и метод css, который возвращает один узел, а не коллекцию.

Worksheets("SheetNamweGoesHere").Range("L4").Value  = HTML_Content.querySelector("p").innerText
0 голосов
/ 22 февраля 2019

Копирование здесь вообще не должно использоваться.Попробуйте вместо этого заполнить значение ячейки.Кроме того, вы не объявили переменную text, поэтому вы получаете объект требуемая ошибка.Ваш код должен читать:

Dim text As String
text = HTML_Content.getElementsByTagName("p")(0).innerText
Sheets(1).Range("L4").Value = text
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...