Excel VBA код для очистки URL-адресов, два разных кода ошибки - PullRequest
0 голосов
/ 30 мая 2019

Снова, очень плохо знакомы с кодированием, любая оценка приветствуется.Посмотрите код ниже, я рад предоставить больше, если это поможет решить проблему.Я отметил [проблему] рядом со строками, которые генерируют сообщения об ошибках.


Set xRng = Application.InputBox("Please select the keyword range", "Google Search Macro", Selection.Address, , , , , 8)
If xRng Is Nothing Then Exit Sub

Application.ScreenUpdating = False
xLastRow = xRng.Rows.Count

Set xRng = xRng(1)

For i = 0 [issue] To xLastRow - 1 
tempStr = xRng.Offset(i).Value
tempStr = Replace(tempStr, " ", "+")
url = "https://www.google.com/search?q=" & tempStr

Set nameCell = xRng.Offset(i, 1)
Set linkCell = xRng.Offset(i, 2)

Set request = CreateObject("MSXML2.XMLHTTP")
request.Open "GET", url, False
request.setRequestHeader "Content-Type", "text/xml"
request.send

returnStr = StrConv(request.responseBody, vbUnicode)
returnPage.body.innerHTML = returnStr [issue]

Первое сообщение об ошибке: «Ошибка компиляции: для управляющей переменной, которая уже используется», и она выделяется »Для i = 0. "

Второе сообщение об ошибке, которое появляется, это" Ошибка компиляции: Ожидаемый конец Sub "и выделяет" returnStr. "

1 Ответ

0 голосов
/ 30 мая 2019

Здесь ваш код отсортирован.

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

Вы пропустили Next i, чтобы закрыть цикл, и End Sub, чтобы закрыть процедуру:

Option Explicit
Sub URLPull()

    Dim searchRange As Range
'    Dim nameCell As Range 'not used
'    Dim linkCell As Range 'not used
    Dim url As String
    Dim returnStr As String
    Dim tempStr As String
    'Dim i As Long, xLastRow As Long 'no need for them using For Each loop
    Dim request As Object
    Dim returnPage As New HTMLDocument
    Dim returnSiteName As Variant
    Dim returnLink As Variant
    Dim xRng As Range 'this was missing
    Dim C As Range 'to loop through the xRng

    'On Error Resume Next delete this, this is for error handle

    Set xRng = Application.InputBox("Please select the keyword range", "Google Search Macro", Selection.Address, , , , , 8)
    If xRng Is Nothing Then Exit Sub

    Application.ScreenUpdating = False
'    xLastRow = xRng.Rows.Count
'
'    Set xRng = xRng(1)

    Set request = CreateObject("MSXML2.XMLHTTP") 'QHarr comment

    For Each C In xRng 'this way you loop through all the cells in your range
        tempStr = C 'this is the cell value
        tempStr = Replace(tempStr, " ", "+")
        url = "https://www.google.com/search?q=" & tempStr 'if you get no results, check here the tempStr value
        'You are not using these:
'        Set nameCell = xRng.Offset(i, 1)
'        Set linkCell = xRng.Offset(i, 2)
        request.Open "GET", url, False
        request.setRequestHeader "Content-Type", "text/xml"
        request.send
        returnStr = StrConv(request.responseBody, vbUnicode)
        returnPage.body.innerHTML = returnStr
    Next C 'this was missing

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