Записанный макрос в Excel не работает при запуске - PullRequest
1 голос
/ 06 апреля 2011
Sub Macro3()
    With ActiveSheet.QueryTables.Add(Connection:= _
        "URL;http://..." _
        , Destination:=Range("Sheet6!$G$23"))

        ''// The line above fails with the error:
        ''// "Run-time error '-2147024809 (80070057)':
        ''//     The destination range is not on the same worksheet
        ''//     that the Query table is being created on."

        .Name = _
        "?tmp=toolbar_FlvTube_homepage&prt=..."
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .BackgroundQuery = True
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .WebSelectionType = xlEntirePage
        .WebFormatting = xlWebFormattingNone
        .WebPreFormattedTextToColumns = True
        .WebConsecutiveDelimitersAsOne = True
        .WebSingleBlockTextImport = False
        .WebDisableDateRecognition = False
        .WebDisableRedirections = False
        .Refresh BackgroundQuery:=False
    End With
End Sub

Сбой записанного макроса, как описано в комментарии.

1 Ответ

4 голосов
/ 06 апреля 2011

Вы записали макрос, пока лист 6 был активен, но теперь пытаетесь запустить его на другом листе.Чтобы запустить макрос для текущего активного листа, просто измените код следующим образом:

Sub Macro3()
    With ActiveSheet.QueryTables.Add(Connection:= _
        "URL;http://..." _
        , Destination:=ActiveSheet.Range("$G$23"))
        ...
    End With
End Sub

Редактировать: (в ответ накомментарий):

Мне нужно иметь возможность вставить результаты запроса на другой лист, а не на активный, так как макрос можно запускать в любое время и каждый раз вставлять в одно и то же место.,Возможно, есть способ изменить ваш активный лист с помощью кода?

Ошибка возникает, когда два листа различаются, поэтому, если вы хотите, чтобы магия произошла на конкретном листе, вы должны указать этот листвместо использования ActiveSheet.Следующий код всегда помещает QueryTable на Sheet6:

Sub Macro3()
    With Sheet6.QueryTables.Add(Connection:= _
        "URL;http://..." _
        , Destination:=Sheet6.Range("$G$23"))
        ...
    End With
End Sub
...