Błąd makrowania stron internetowych

0

Próbuję zeskrobać wiele stron, które są wynikiem wyszukiwania kluczowej pracy. Napisałem ten kod, ale po uruchomieniu pojawia się błąd. Błąd:

Application \-defined or object-defined error. 

Po kliknięciu debugowania wskazuje mnie następujący wiersz:

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

Kod:

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
Haytham
źródło

Odpowiedzi:

1

Używasz zmiennej mystrw tym wierszu -

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"

Ale następnie przedefiniujesz go przed wywołaniem go w querytables.addmetodzie -

mystr = Cells(x, 1)

Więc teraz jest

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

Jeśli komórki (x, 1) nie mają poprawnego formatu dla querytables.addmetody, nie będą wiedziały, co zrobić.

Wydaje się, że nie zadeklarowałeś żadnej ze swoich zmiennych, więc nie jestem pewien, jakie one są.

Raystafarian
źródło
To było pomocne, dziękuję. Czy możesz mi powiedzieć, jak sprawić, by przechowywał wszystkie wyniki w jednej zakładce do momentu jej wypełnienia, a następnie uruchamiał inną?
haytham,
@aytham, jeśli było to pomocne, musisz głosować na pytanie tak jak ja!
Dave
@haytham, to chyba osobne pytanie. Jeśli ten problem został rozwiązany, kliknij zielony znacznik wyboru, aby oznaczyć go jako taki. Zawsze możesz powrócić do niego, jeśli masz dodatkowe pytanie
Raystafarian,