Fehler beim Web Scraping-Makro

502
haytham

Ich versuche, mehrere Seiten, die ein Suchergebnis einer Schlüsselarbeit sind, auszulagern. Ich habe diesen Code geschrieben, erhalte jedoch eine Fehlermeldung, wenn ich ihn ausführte. Error:

Application \-defined or object-defined error. 

Wenn ich auf debug klicke, zeigt es mir die folgende Zeile an:

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

Code:

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 Antwort auf die Frage

1
Raystafarian

You use your variable mystr in this line -

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"

But then you redefine it before calling it in the querytables.add method -

mystr = Cells(x, 1)

So, now it's

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

Unless cells(x,1) has the correct format for the querytables.add method, it won't know what to do.

You also haven't seemed to declare any of your variables, so I'm not sure what they are.

Das war hilfreich, danke. Können Sie mir sagen, wie man alle Ergebnisse in einer Registerkarte speichert, bis sie gefüllt ist, und dann eine andere Registerkarte starten? haytham vor 9 Jahren 0
@haytham wenn dies hilfreich war, dann musst du die Frage wie ich befürworten! Dave vor 9 Jahren 0
@haytham das müsste eine separate Frage sein, denke ich. Wenn dieses Problem gelöst ist, klicken Sie auf das grüne Häkchen, um es als solches zu markieren. Sie können jederzeit darauf zurückgreifen, wenn Sie eine zusätzliche Frage haben Raystafarian vor 9 Jahren 0