回答編集履歴

1

追記

2016/06/01 02:18

投稿

jawa
jawa

スコア3013

test CHANGED
@@ -25,3 +25,215 @@
25
25
 
26
26
 
27
27
  よろしくお願いします。
28
+
29
+
30
+
31
+
32
+
33
+ ---
34
+
35
+ 返信コメントを受けて追記
36
+
37
+ ---
38
+
39
+ 単位というのは、データを取得できる単位のことです。
40
+
41
+
42
+
43
+ データを取得するために、URLとして会場番号・開始日・日付・レースNOが必要ということなので、これが単位ですね。
44
+
45
+ 取得できるデータも、指定した会場番号・開始日・日付・レースNOに関する情報が取れるはずです。
46
+
47
+ (この指定方法だと複数会場とか複数日付を同時に取得することはできないので、会場番号・開始日・日付・レースNO単位の取得、というわけです。)
48
+
49
+
50
+
51
+
52
+
53
+ 内容というのは、取得できるデータの内容です。そのままですね(^-^;
54
+
55
+ おそらくそのレースに出場する人とか、スタート位置とか、モーターの情報とかが取得できているのでしょうが、ソースを見る限り今回はあまり触れなくていいのかもしれません。
56
+
57
+
58
+
59
+ ---
60
+
61
+ >どうやって開始日を自動で検索しているのか
62
+
63
+ tnd-.-bさんも詳しく説明してくれていますが、Weekdayは指定した日付が何番目の曜日かを返す関数です。
64
+
65
+ 今回は火曜日を基準に指定しているので、火曜日が1、水が2、木が3・・・月が7となります。
66
+
67
+
68
+
69
+ これを踏まえて、
70
+
71
+ ```
72
+
73
+ Day_初日 = Day_日付 - Weekday(Day_日付, vbTuesday) + 1
74
+
75
+ ```
76
+
77
+ の式は Day_初日 には Day_日付の直前の火曜日を返す式ということになります。
78
+
79
+
80
+
81
+ 私もボートには詳しくありませんが、開始日に規則性がないのであれば都度手入力してあげるか、別途カレンダーデータを用意してあげて検索することになると思います。
82
+
83
+ 基本的に会場毎に基準となる曜日でもあれば(江戸川は火曜日、浜松は月曜日など)、コードで計算できるのですが。
84
+
85
+
86
+
87
+ ---
88
+
89
+ 以下、ここまでの情報からやりたそうなことを形にしてみました。動作未確認ですが参考までに。
90
+
91
+ ```
92
+
93
+ Sub データ抽出(Day_日付 As Date, Lng_場 As Long)
94
+
95
+
96
+
97
+ Dim Str_アドレス As String
98
+
99
+ Dim Day_初日 As Date
100
+
101
+
102
+
103
+ '会場ごとに基準の曜日を変更
104
+
105
+ Dim Week_基準 As VbDayOfWeek
106
+
107
+
108
+
109
+ Select Case Lng_場
110
+
111
+ Case 3
112
+
113
+ '江戸川:火曜
114
+
115
+ Week_基準 = vbTuesday
116
+
117
+
118
+
119
+ '(ここに他会場の基準曜日も設定する)
120
+
121
+
122
+
123
+ Case Else
124
+
125
+ 'どれにも該当しなければ日曜を基準
126
+
127
+ Week_基準 = vbSunday
128
+
129
+
130
+
131
+ End Select
132
+
133
+
134
+
135
+ Day_初日 = Day_日付 - Weekday(Day_日付, Week_基準) + 1
136
+
137
+
138
+
139
+ Sheet1.Select
140
+
141
+ Cells.Delete Shift:=xlUp
142
+
143
+
144
+
145
+ 'レース番号は引数取得ではなくループ処理にする
146
+
147
+ For Lng_レース = 1 To 12
148
+
149
+
150
+
151
+ Str_アドレス = "FINDER;http://app.boatrace.jp/race/" & Format(Lng_場, "00")
152
+
153
+ Str_アドレス = Str_アドレス & "_" & Format(Day_初日, "yyyymmdd")
154
+
155
+ Str_アドレス = Str_アドレス & ".php?day=" & Format(Day_日付, "yyyymmdd")
156
+
157
+ Str_アドレス = Str_アドレス & "&jyo=" & Format(Lng_場, "00")
158
+
159
+ Str_アドレス = Str_アドレス & "&rno=" & Format(Lng_レース, "00") & "&type=program"
160
+
161
+
162
+
163
+ 'Dim str_列 As String
164
+
165
+ 'If Lng_レース < 8 Then
166
+
167
+ ' str_列 = Chr(Asc("A") + (Lng_レース - 1) * 4)
168
+
169
+ 'Else
170
+
171
+ ' str_列 = "A" & Chr(Asc("A") + ((Lng_レース - 1) * 4) - 26)
172
+
173
+ 'End If
174
+
175
+
176
+
177
+ Dim Lng_列 As Long
178
+
179
+ Lng_列 = ((Lng_レース - 1) * 4) + 1
180
+
181
+
182
+
183
+ Dim rng_出力 As Range
184
+
185
+ Set rng_出力 = Range(Cells(1, Lng_列))
186
+
187
+
188
+
189
+ With ActiveSheet.QueryTables.Add(Connection:=Str_アドレス, Destination:=rng_出力)
190
+
191
+ .Name = "Data"
192
+
193
+ .FieldNames = True
194
+
195
+ .RowNumbers = False
196
+
197
+ .FillAdjacentFormulas = False
198
+
199
+ .PreserveFormatting = False
200
+
201
+ .RefreshOnFileOpen = False
202
+
203
+ .BackgroundQuery = False
204
+
205
+ .RefreshStyle = xlInsertDeleteCells
206
+
207
+ .SavePassword = False
208
+
209
+ .SaveData = True
210
+
211
+ .AdjustColumnWidth = True
212
+
213
+ .RefreshPeriod = 0
214
+
215
+ .WebSelectionType = xlEntirePage
216
+
217
+ .WebFormatting = xlWebFormattingAll
218
+
219
+ .WebPreFormattedTextToColumns = True
220
+
221
+ .WebConsecutiveDelimitersAsOne = True
222
+
223
+ .WebSingleBlockTextImport = False
224
+
225
+ .WebDisableDateRecognition = False
226
+
227
+ .WebDisableRedirections = False
228
+
229
+ .Refresh BackgroundQuery:=False
230
+
231
+ End With
232
+
233
+ Next
234
+
235
+ End Sub
236
+
237
+ ```
238
+
239
+