Ошибка:
Метод:
getElementsByClassName
или
getElementsByTagName
Эти возвращаемые коллекции, которые вы затем индексируете, например,
ie.document.getElementsByClassName("className")(0) 'first element
Внесение этих изменений должно обработать вашу первоначальную ошибку.
Ориентация на конкретную строку и столбец:
Вы можете использовать nth-of-type
если автоматизация с IE, то есть tr:nth-of-type(rowNumberHere)
, td:nth-of-type(columnNumberHere)
.
Я думаю, что вы после первого столбца второго ряда, поэтому я бы использовал селекторы CSS
ie.document.querySelector(".table tr:nth-of-type(2) td:nth-of-type(1)").innerText
Современные браузеры оптимизированы для CSSселекторы, так что это должен быть эффективный метод.
Вся таблица:
Простой способ скопировать всю таблицу - использовать буфер обмена
Option Explicit
Public Sub GetInfo()
Dim ie As New InternetExplorer, url As String, ws As Worksheet
Dim t As Date, clipboard As Object, hTable As Object
url = "url"
Const MAX_WAIT_SEC As Long = 10
Set ws = ThisWorkbook.Worksheets("Sheet1")
Set clipboard = GetObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
With ie
.Visible = True
.Navigate2 url
While .Busy Or .readyState < 4: DoEvents: Wend
With .document
t = Timer
Do
On Error Resume Next
Set hTable = .querySelector(".table")
On Error GoTo 0
If Timer - t > MAX_WAIT_SEC Then Exit Do
Loop While hTable Is Nothing
End With
If hTable Is Nothing Then Exit Sub
clipboard.SetText hTable.outerHTML
clipboard.PutInClipboard
ws.Range("A1").PasteSpecial
.Quit
End With
End Sub
Зацикливание строк и столбцов таблицы:
Если вы хотите зациклить строки и столбцы таблицы и записать их, см. здесь .