回答編集履歴
1
追記
answer
CHANGED
@@ -11,4 +11,109 @@
|
|
11
11
|
|
12
12
|
提示のソースコードやコード中のURLから解析すればアドバイスもできるかもしれませんが、まずは質問者さんの言葉でもう少し補足をお願いしたいです。
|
13
13
|
|
14
|
-
よろしくお願いします。
|
14
|
+
よろしくお願いします。
|
15
|
+
|
16
|
+
|
17
|
+
---
|
18
|
+
返信コメントを受けて追記
|
19
|
+
---
|
20
|
+
単位というのは、データを取得できる単位のことです。
|
21
|
+
|
22
|
+
データを取得するために、URLとして会場番号・開始日・日付・レースNOが必要ということなので、これが単位ですね。
|
23
|
+
取得できるデータも、指定した会場番号・開始日・日付・レースNOに関する情報が取れるはずです。
|
24
|
+
(この指定方法だと複数会場とか複数日付を同時に取得することはできないので、会場番号・開始日・日付・レースNO単位の取得、というわけです。)
|
25
|
+
|
26
|
+
|
27
|
+
内容というのは、取得できるデータの内容です。そのままですね(^-^;
|
28
|
+
おそらくそのレースに出場する人とか、スタート位置とか、モーターの情報とかが取得できているのでしょうが、ソースを見る限り今回はあまり触れなくていいのかもしれません。
|
29
|
+
|
30
|
+
---
|
31
|
+
>どうやって開始日を自動で検索しているのか
|
32
|
+
tnd-.-bさんも詳しく説明してくれていますが、Weekdayは指定した日付が何番目の曜日かを返す関数です。
|
33
|
+
今回は火曜日を基準に指定しているので、火曜日が1、水が2、木が3・・・月が7となります。
|
34
|
+
|
35
|
+
これを踏まえて、
|
36
|
+
```
|
37
|
+
Day_初日 = Day_日付 - Weekday(Day_日付, vbTuesday) + 1
|
38
|
+
```
|
39
|
+
の式は Day_初日 には Day_日付の直前の火曜日を返す式ということになります。
|
40
|
+
|
41
|
+
私もボートには詳しくありませんが、開始日に規則性がないのであれば都度手入力してあげるか、別途カレンダーデータを用意してあげて検索することになると思います。
|
42
|
+
基本的に会場毎に基準となる曜日でもあれば(江戸川は火曜日、浜松は月曜日など)、コードで計算できるのですが。
|
43
|
+
|
44
|
+
---
|
45
|
+
以下、ここまでの情報からやりたそうなことを形にしてみました。動作未確認ですが参考までに。
|
46
|
+
```
|
47
|
+
Sub データ抽出(Day_日付 As Date, Lng_場 As Long)
|
48
|
+
|
49
|
+
Dim Str_アドレス As String
|
50
|
+
Dim Day_初日 As Date
|
51
|
+
|
52
|
+
'会場ごとに基準の曜日を変更
|
53
|
+
Dim Week_基準 As VbDayOfWeek
|
54
|
+
|
55
|
+
Select Case Lng_場
|
56
|
+
Case 3
|
57
|
+
'江戸川:火曜
|
58
|
+
Week_基準 = vbTuesday
|
59
|
+
|
60
|
+
'(ここに他会場の基準曜日も設定する)
|
61
|
+
|
62
|
+
Case Else
|
63
|
+
'どれにも該当しなければ日曜を基準
|
64
|
+
Week_基準 = vbSunday
|
65
|
+
|
66
|
+
End Select
|
67
|
+
|
68
|
+
Day_初日 = Day_日付 - Weekday(Day_日付, Week_基準) + 1
|
69
|
+
|
70
|
+
Sheet1.Select
|
71
|
+
Cells.Delete Shift:=xlUp
|
72
|
+
|
73
|
+
'レース番号は引数取得ではなくループ処理にする
|
74
|
+
For Lng_レース = 1 To 12
|
75
|
+
|
76
|
+
Str_アドレス = "FINDER;http://app.boatrace.jp/race/" & Format(Lng_場, "00")
|
77
|
+
Str_アドレス = Str_アドレス & "_" & Format(Day_初日, "yyyymmdd")
|
78
|
+
Str_アドレス = Str_アドレス & ".php?day=" & Format(Day_日付, "yyyymmdd")
|
79
|
+
Str_アドレス = Str_アドレス & "&jyo=" & Format(Lng_場, "00")
|
80
|
+
Str_アドレス = Str_アドレス & "&rno=" & Format(Lng_レース, "00") & "&type=program"
|
81
|
+
|
82
|
+
'Dim str_列 As String
|
83
|
+
'If Lng_レース < 8 Then
|
84
|
+
' str_列 = Chr(Asc("A") + (Lng_レース - 1) * 4)
|
85
|
+
'Else
|
86
|
+
' str_列 = "A" & Chr(Asc("A") + ((Lng_レース - 1) * 4) - 26)
|
87
|
+
'End If
|
88
|
+
|
89
|
+
Dim Lng_列 As Long
|
90
|
+
Lng_列 = ((Lng_レース - 1) * 4) + 1
|
91
|
+
|
92
|
+
Dim rng_出力 As Range
|
93
|
+
Set rng_出力 = Range(Cells(1, Lng_列))
|
94
|
+
|
95
|
+
With ActiveSheet.QueryTables.Add(Connection:=Str_アドレス, Destination:=rng_出力)
|
96
|
+
.Name = "Data"
|
97
|
+
.FieldNames = True
|
98
|
+
.RowNumbers = False
|
99
|
+
.FillAdjacentFormulas = False
|
100
|
+
.PreserveFormatting = False
|
101
|
+
.RefreshOnFileOpen = False
|
102
|
+
.BackgroundQuery = False
|
103
|
+
.RefreshStyle = xlInsertDeleteCells
|
104
|
+
.SavePassword = False
|
105
|
+
.SaveData = True
|
106
|
+
.AdjustColumnWidth = True
|
107
|
+
.RefreshPeriod = 0
|
108
|
+
.WebSelectionType = xlEntirePage
|
109
|
+
.WebFormatting = xlWebFormattingAll
|
110
|
+
.WebPreFormattedTextToColumns = True
|
111
|
+
.WebConsecutiveDelimitersAsOne = True
|
112
|
+
.WebSingleBlockTextImport = False
|
113
|
+
.WebDisableDateRecognition = False
|
114
|
+
.WebDisableRedirections = False
|
115
|
+
.Refresh BackgroundQuery:=False
|
116
|
+
End With
|
117
|
+
Next
|
118
|
+
End Sub
|
119
|
+
```
|