#vba #excel #excel-2007
#vba #excel #excel-2007
Вопрос:
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_homepageamp;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:
Вы записали макрос, когда лист 6 был активен, но теперь пытаетесь запустить его на другом листе. Чтобы запустить макрос для текущего активного листа, просто измените код следующим образом:
Sub Macro3()
With ActiveSheet.QueryTables.Add(Connection:= _
"URL;http://..." _
, Destination:=ActiveSheet.Range("$G$23"))
...
End With
End Sub
Редактировать: (в ответ на комментарий):
Мне нужно иметь возможность вставить результаты запроса на другой лист, чем активный, поскольку макрос может быть запущен в любое время и должен каждый раз вставляться в одно и то же место. Возможно, есть способ изменить ваш активный лист с помощью кода?
Ошибка возникает, когда два листа отличаются друг от друга, поэтому, если вы хотите, чтобы волшебство произошло на определенном листе, вам следует указать этот лист вместо использования ActiveSheet
. Следующий код всегда будет размещать таблицу запросов на Sheet6:
Sub Macro3()
With Sheet6.QueryTables.Add(Connection:= _
"URL;http://..." _
, Destination:=Sheet6.Range("$G$23"))
...
End With
End Sub
Комментарии:
1. Мне нужно иметь возможность вставить результаты запроса на другой лист, чем активный, поскольку макрос может быть запущен в любое время и должен каждый раз вставляться в одно и то же место. Возможно, есть способ изменить ваш активный лист с помощью кода?
2. Абсолютно! Просто добавьте
Sheet6.Activate
в свой код, прямо передWith ...
блоком.3. Или, что еще лучше, измените обе
ActiveSheet
ссылки наSheet6
.