Ошибка макроса Web Scraping

389
haytham

Я пытаюсь удалить несколько страниц, которые являются результатом поиска ключевой работы. Я написал этот код, но я получаю сообщение об ошибке при запуске. Ошибка:

Application \-defined or object-defined error. 

Когда я нажимаю «Отладка», он указывает на следующую строку:

With ActiveSheet.QueryTables.Add(Connection:=mystr, Destination:=Range("$A$1")) 

Код:

Sub adds()  For x = 1 To 3  Worksheets("sheet1").Select  Worksheets("sheet1").Activate  mystr = "URL;http://apps.webofknowledge.com.ezproxy1.lib.asu.edu/Search.do?product=WOS&SID=1BzJbqm9xDW5Yzj4rhB&search_mode=GeneralSearch&prID=44dc4b3a-138a-4532-8429-772860bea673"  mystr = Cells(x, 1)  Worksheets.Add(After:=Worksheets(Worksheets.Count)).Name = x  With ActiveSheet.QueryTables.Add(Connection:=mystr, Destination:=Range("$A$1"))  '.CommandType = 0  .Name = _ "http://apps.webofknowledge.com.ezproxy1.lib.asu.edu/Search.do?product=WOS&SID=1BzJbqm9xDW5Yzj4rhB&search_mode=GeneralSearch&prID=44dc4b3a-138a-4532-8429-772860bea673"  .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  Next x  End Sub 
0

1 ответ на вопрос

1
Raystafarian

Вы используете свою переменную mystrв этой строке -

With ActiveSheet.QueryTables.Add(Connection:=mystr, Destination:=Range("$A$1")) 

mystr = "URL;http://apps.webofknowledge.com.ezproxy1.lib.asu.edu/Search.do?product=WOS&SID=1BzJbqm9xDW5Yzj4rhB&search_mode=GeneralSearch&prID=44dc4b3a-138a-4532-8429-772860bea673"

Но затем вы переопределяете его перед вызовом в querytables.addметоде -

mystr = Cells(x, 1)

Итак, теперь это

With ActiveSheet.QueryTables.Add(Connection:=Cells(x, 1), Destination:=Range("$A$1")) 

Если ячейки (x, 1) не имеют правильный формат для querytables.addметода, он не будет знать, что делать.

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

Это было полезно, спасибо. Можете ли вы сказать мне, как заставить его хранить все результаты в одной вкладке, пока она не заполнится, а затем запустить другую вкладку? haytham 9 лет назад 0
@ Haytham, если это было полезно, тогда вы должны поставить вопрос так, как я! Dave 9 лет назад 0
@ Haytham, это должен быть отдельный вопрос, я думаю. Если эта проблема решена, пожалуйста, нажмите зеленую галочку, чтобы пометить ее как таковую. Вы всегда можете обратиться к нему, если у вас есть дополнительный вопрос Raystafarian 9 лет назад 0

Похожие вопросы