У вас есть идентификатор, так что используйте его.Теоретически он должен быть уникальным.
IE.Document.getElementById("eventVO.problemComments")
Прочее:
Больше HTML и / или URL поможет в дальнейшем.
Однако, если вместо этого вы намереваетесь зацикливать коллекцию элементов с тегом textarea
, то, согласно комментарию @TimWilliams, вы будете циклически перебирать коллекцию и получать доступ к отдельным элементам по индексу.Однако вам нужно исправить синтаксис присваивания, ws.Cells("x, 9")
не будет работать, и я, вероятно, использовал бы селектор CSS, чтобы получить nodeList
для обхода.
Селектор CSS:
.document.querySelectorAll("textarea[name='eventVO.problemComments']")
Это говорит, что выберите элементы с именем тега textarea
, которые имеют атрибут name
со значением 'eventVO.problemComments'
.
В цикл возвращаются nodeList
выможет иметь что-то вроде:
Dim x As Long, aNodeList As Object
Set aNodeList =IE.document.querySelectorAll("textarea[name='eventVO.problemComments']")
For x = 0 To aNodeList.Length -1
aNodeList.Item(x) = ws.Cells(x+2,9) '<Note how there is no "" inside the ()
' aNodeList(x) '<==potentially variation in syntax
Next x
Вы также можете просто зациклить коллекцию объектов класса textarea, проверяя имя:
Dim a As Object, b As Object
Set a = ie.document.getElementsByTagName("textarea") '<=collection
For Each b In a
'On Error Resume Next ''<=This may potentially be needed if not all have a name attribute
If InStr(1, b.getAttribute("name").innerText, "eventVO.problemComments") > 0 Then 'You might be able to just say If b.Name = eventVO.problemComments
'Do something with the matched element
End If
'On Error GoTo 0
Next b