Sub main_all()
Dim mm As Integer
'2006年
For mm = 1 To 12
Call yyyy_mm(2006, mm) '月別の取得関数
Next mm
'2007年
For mm = 1 To 12
Call yyyy_mm(2007, mm) '月別の取得関数
Next mm
'2008年
For mm = 1 To 12
Call yyyy_mm(2008, mm) '月別の取得関数
Next mm
'2009年
For mm = 1 To 12
Call yyyy_mm(2009, mm) '月別の取得関数
Next mm
End Sub
子サブルーチン'年と月を受け取り、開催日・場所単位で処理する。
Sub yyyy_mm(yyyy As Integer, mm As Integer)
'IEの起動※と、ここで開き、
Dim objIE As Object '変数を定義します。
Set objIE = CreateObject("InternetExplorer.Application") 'オブジェクトを作成します。
objIE.Visible = True '可視、Trueで見えるようにします。
'リンク情報を取り出すとなんだかんだ処理して、
Dim i As Integer 'ループの変数
For i = 0 To objIE.Document.Links.Length - 1
'なんだかんだ処理して、開催日のページを渡す。※孫ルーチンを呼ぶ
Call get_racelist(objIE.Document.Links(i).Href) 'リンク先
Next i
'IEを閉じる閉じます。
objIE.Quit
Set objIE = Nothing
End Sub
Sub get_racelist(strURL As String)
'IEの起動
Dim objIE As Object
Set objIE = CreateObject("InternetExplorer.Application") 'オブジェクトを作成します。
objIE.Visible = True '可視、Trueで見えるようにします。
'IEを開いて、なんだかんだ処理して、IEを閉じる。。。
'IEを閉じる
objIE.Quit
Set objIE = Nothing
End Sub
Dim SET_YLINE As Integer 'グローバル変数に行数を保存
Dim objIE2 As Object
Dim objIE As Object
Sub main_all()
'シート6を選択
Sheets("Sheet6").Select
Range("A1").Select
SET_YLINE = 2 'A2から書きたいので、グローバル変数を初期化
Call ie_open
Dim mm As Integer
'2006年
For mm = 1 To 12
Call yyyy_mm(2006, mm) '月別の取得関数
Next mm
'2007年
For mm = 1 To 12
Call yyyy_mm(2007, mm) '月別の取得関数
Next mm
'2008年
For mm = 1 To 12
Call yyyy_mm(2008, mm) '月別の取得関数
Next mm
'2009年
For mm = 1 To 12
Call yyyy_mm(2009, mm) '月別の取得関数
Next mm
ie_close
End Sub
Sub main_tan()
Dim strYYYY As String
Dim strMM As String
Dim mm As Integer
Dim yyyy As Integer
'入力
strYYYY = InputBox("調べたい年を西暦で入力", "年", "2009")
strMM = InputBox("調べたい月を1-12で入力", "月", "1")
'数値変換
yyyy = CInt(strYYYY)
mm = CInt(strMM)
'シート6を選択
Sheets("Sheet6").Select
Range("A1").Select
Call ie_open
SET_YLINE = 2 'A2から書きたいので、グローバル変数を初期化
Call yyyy_mm(2009, mm) '月別の取得関数
Call ie_close
End Sub
'年と月を受け取り、開催日・場所単位で処理する。
Sub yyyy_mm(yyyy As Integer, mm As Integer)
Dim strURL As String '受け取った引数からURLを作成
'例)http://keiba.yahoo.co.jp/schedule/2009/08/
strURL = "http://keiba.yahoo.co.jp/schedule/" & yyyy & "/" & Right("0" & mm, 2) & "/"
'処理したいページを表示します。
objIE.Navigate strURL '.Navigate メソッドで競馬の開催日を表示する。
'ページの表示完了を待ちます。
While objIE.ReadyState <> 4 Or objIE.Busy = True '.ReadyState <> 4の間まわる。
DoEvents '重いので嫌いな人居るけど。
Wend
'リンク情報を取り出す
Dim i As Integer 'ループの変数
For i = 0 To objIE.Document.Links.Length - 1
If Right(objIE.Document.Links(i).InnerText, 1) = "日" Then
'開催日のページを渡す。
Cells(SET_YLINE, "B") = objIE.Document.Links(i).InnerText
Call get_racelist(objIE.Document.Links(i).Href) 'リンク先
Debug.Print objIE.Document.Links(i).InnerText '内側のテキスト
End If
Next i
End Sub
Sub get_racelist(strURL As String)
'処理したいページを表示します。
Dim strWORK As String '変数を定義します。
strWORK = Replace(strURL, "racelist.html", "") '後ろのURLをカット
strWORK = strWORK & "01/result.html" 'これで1RのURL作成
'↑作った1Rを書き込む
Cells(SET_YLINE, "A") = strWORK '結果を書き込む
SET_YLINE = SET_YLINE + 1
objIE2.Navigate strWORK '.Navigate メソッドで1Rに飛ぶ
DoEvents
'ページの表示完了を待ちます。
While objIE2.ReadyState <> 4 Or objIE2.Busy = True '.ReadyState <> 4の間まわる。
DoEvents '重いので嫌いな人居るけど。
Wend
'リンク情報を取り出す
Dim i As Integer 'ループの変数
For i = 0 To objIE2.Document.Links.Length - 1
If Right(objIE2.Document.Links(i).InnerText, 1) = "R" Then
'結果の書き込み
Cells(SET_YLINE, "A") = objIE2.Document.Links(i).Href '結果を書き込む
Cells(SET_YLINE, "B") = objIE2.Document.Links(i).InnerText
SET_YLINE = SET_YLINE + 1
Debug.Print objIE2.Document.Links(i).Href 'リンク先
End If
Next i
End Sub