次の Web サイトから NFL の新兵に関するデータを抽出しようとしています。
http://espn.go.com/college-sports/football/recruiting/rankings/_/class/2013
すべてのポジションにアクセスし、情報を Excel スプレッドシートにコピー/貼り付け/抽出する必要があります。以下に示すように、これらの各位置の URL の唯一の違いは大文字の VARIABLE です。アスリートからコーナーバック、ワイドレシーバーに変更するには、この変数が必要です。
http://espn.go.com/college-sports/football/recruiting/playerrankings/_/position/VARIABLE/class/2013/view/position
私が使用しているコードは次のとおりです。
Dim array_example(18) As String
Sub Macro1()
array_example(0) = "athlete"
array_example(1) = "cornerback"
array_example(2) = "defensive-end"
array_example(3) = "defensive-tackle"
array_example(4) = "fullback"
array_example(5) = "inside-linebacker"
array_example(6) = "kicker"
array_example(7) = "offensive-center"
array_example(8) = "offensive-guard"
array_example(9) = "outside-linebacker"
array_example(10) = "offensive-tackle"
array_example(11) = "quarterback-dual-threat"
array_example(12) = "quarterback-pocket-passer"
array_example(13) = "running-back"
array_example(14) = "safety"
array_example(15) = "tight-end-h"
array_example(16) = "tight-end-y"
array_example(17) = "wide-receiver"
For i = 0 To 17
LastUsedRow = ActiveSheet.Range("A1").Offset(Sheet1.Rows.Count - 1, 0).End(xlUp).Row
LastEmptyRow = LastUsedRow + 1
Cell = "A" & LastEmptyRow
With ActiveSheet.QueryTables.Add(Connection:="URL;http://espn.go.com/college-sports/football/recruiting/playerrankings/_/position/" & array_example(i) & "/class/2013/view/position" & "", Destination:=Range("" & Cell & ""))
.Name = "s"
.FieldNames = True
.RowNumbers = True
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertEntireCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.WebSelectionType = xlAllTables
.WebFormatting = xlWebFormattingNone
.WebPreFormattedTextToColumns = True
.WebConsecutiveDelimitersAsOne = False
.WebSingleBlockTextImport = False
.WebDisableDateRecognition = False
.WebDisableRedirections = False
.Refresh BackgroundQuery:=True
End With
Next i
End Sub
私の問題は、このコードを実行するたびに、Excel がスタックすることです (カーソルのために回転し続ける小さな円形ディスクがあります)。Esc キーを押してコードを停止すると、Excel スプレッドシートにコピーされた位置が 1 つしかないことがわかりました。私のコードを見て、すべての位置をループし、すべての情報を(次々に)スプレッドシートにコピーするために変更できることを教えてください。
ありがとうございます。