Я только что задал здесь вопрос вчера (еще раз спасибо!), Но, надеюсь, ничего страшного, если я задам другой. В конце моего текущего макроса VBA у меня есть массив с URL-адресами / ссылками. Я пытаюсь найти и заменить часть, общую для всех URL-адресов, и получаю сообщение об ошибке в моем текущем коде для этого. Вот мой текущий макрос без добавленной части, он неплохо выполняет свою работу и создает массив и очищает URL-адреса в нем.
Sub GetData()
Dim IE As InternetExplorer
Dim itemEle As Object
Dim upvote As Integer, awards As Integer, animated As Integer
Dim postdate As String, upvotepercent As String, oc As String, filetype As String, linkurl As String, myhtmldata As String, visiComments As String, totalComments As String, removedComments As String
Dim y As Integer
Set IE = New InternetExplorer
IE.Visible = False
IE.navigate (ActiveCell.Value)
Do While IE.Busy = True Or IE.readyState <> 4: DoEvents: Loop
Dim nodeList As Object, i As Long, urls(), results(), results2()
Set nodeList = IE.document.querySelectorAll(".comments")
ReDim urls(0 To nodeList.Length - 1)
ReDim results(1 To nodeList.Length, 1 To 5)
'Store all urls in an array to later loop
For i = 0 To nodeList.Length - 1
urls(i) = nodeList.Item(i).href
Next
For i = LBound(urls) To UBound(urls)
IE.Navigate2 urls(i) 'opens in a new tab
While IE.Busy Or IE.readyState <> 4: DoEvents: Wend
results(i + 1, 1) = IE.document.querySelector("a.title").innerText 'title
results(i + 1, 2) = IE.document.querySelector(".number").innerText 'upvotes
upvotepercent = IE.document.querySelector(".word").NextSibling.NodeValue '%
results(i + 1, 3) = CDbl(Mid(upvotepercent, 3, 2)) / 100
results(i + 1, 4) = IE.document.querySelector("div.date > time").innerText
Next
Вот где моя проблема. Все URL-адреса / значения в этом массиве содержат "old.reddit.com", и я пытаюсь заменить его на "deleteddit.com". Я добавил к нему этот код, и он не выполняет свою работу, хотя, насколько я понимаю, я правильно использую функцию Replace - я получаю сообщение об ошибке «индекс вне допустимого диапазона» в строке url(rw, col) = Replace
.
Часть, которая выдает ошибку, является первой. (вторая часть должна очищать два значения из каждого из новых URL-адресов, используя тот же метод, что и для исходных URL-адресов, но сейчас проблема заключается в первом - или я так думаю, иногда отладчик не очень понятен).
tofind = "old.reddit.com"
toreplace = "removeddit.com"
For rw = LBound(urls) To UBound(urls)
For col = LBound(urls, 1) To UBound(urls, 1)
urls(rw, col) = Replace(urls(rw, col), tofind, toreplace)
Next
Next
For i = LBound(urls) To UBound(urls)
IE.Navigate2 urls(i) 'opens in a new tab
While IE.Busy Or IE.readyState <> 4: DoEvents: Wend
Application.Wait (Now + TimeValue("0:00:03"))
visiComments = IE.document.querySelector(".removed-text").innerText 'title
results(i + 1, 5) = visiComments
Next
ActiveSheet.Cells(1, 1).Resize(UBound(results, 1), UBound(results, 2)) = results
IE.Quit
End Sub
Я чувствую, что пробую слишком продвинутые вещи, учитывая, что я только что начал работать с VBA, поэтому любые указатели будут очень признательны! Спасибо! :)