競争成績(基本的にタイム)のデータベースの作成を、エクセルかアクセスを使用して行いたいと考えています。
Webクエリを使ってこの画面の成績表(1R)の取り込みは出来たのですが、この日行われた他のレース(2R~11R)の成績表も一括で取り込むことは可能でしょうか?
また、レース成績表のデータ取り込みに関して他に良い方法があれば教えてください。
当方エクセル、アクセス共に初心者のため、これから勉強したいと考えています。
よろしくお願いします。
http://www2.keiba.go.jp/keibaWeb/PageFlows/RaceMarkTable/RaceMarkTableController.jpf?k_babaCode=19&k_raceNo=1&k_raceDate=2009%2F01%2F06
ExcelのVBAでWebクエリで全てのレースを取り込むマクロを作ってみました。
実行すると、レースごとにシートを挿入してWebクエリで取り込みます。
VBAを使ったことがなければ以下のページを参考にしてみてください。
http://www.officepro.jp/excelvba/ini/index1.html
http://www.officepro.jp/excelvba/ini/index2.html
http://www.officepro.jp/excelvba/ini/index3.html
Sub GetWeb() Dim strUrl As String Dim i As Integer For i = 1 To 11 Worksheets.Add strUrl = "URL;http://www2.keiba.go.jp/keibaWeb/PageFlows/RaceMarkTable/" & _ "RaceMarkTableController.jpf?k_babaCode=19&k_raceNo=" & i & "&k_raceDate=2009%2F01%2F06" With ActiveSheet.QueryTables.Add(Connection:=strUrl, Destination:=Range("A1")) .Name = "RaceMarkTableController.jpf?k_babaCode=19&k_raceNo=1&k_raceDate=2009%2F01%2F06" .FieldNames = True .RowNumbers = False .FillAdjacentFormulas = False .PreserveFormatting = True .RefreshOnFileOpen = False .BackgroundQuery = True .RefreshStyle = xlInsertDeleteCells .SavePassword = False .SaveData = True .AdjustColumnWidth = True .RefreshPeriod = 0 .WebSelectionType = xlSpecifiedTables .WebFormatting = xlWebFormattingNone .WebTables = "10" .WebPreFormattedTextToColumns = True .WebConsecutiveDelimitersAsOne = True .WebSingleBlockTextImport = False .WebDisableDateRecognition = False .WebDisableRedirections = False .Refresh BackgroundQuery:=False End With Next i End Sub
実は私もWebクエリを取り込む関数のパラメータとか知ってるわけではなくて、
Excelのマクロの自動記録という機能で実際にWebクエリでデータを取り込む作業を記録して、
そこからできあがったコードをちょこちょこっと変えただけでした。
マクロの自動記録の仕方はこちら
http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/vba_01_2007.html
このようにExcelの場合はやりたいことを自動記録することで、何となくどういう関数を使えばいいかわかってしまいます。
初心者こそExcelVBAをお勧めします。
前のコードを日付を変更しやすいように変更してみました。
コードの最初の方の年月日のところの数字を変えると、別の日も取り込めます。
ただし、レースが無かった日やレイアウトが違う昔のデータを取り込むことはできませんが。
Sub GetWeb() '年 Const myYear As String = "2009" '月 Const myMonth As String = "01" '日 Const myDay As String = "06" Dim strUrl As String Dim i As Integer For i = 1 To 11 Worksheets.Add strUrl = "URL;http://www2.keiba.go.jp/keibaWeb/PageFlows/RaceMarkTable/" & _ "RaceMarkTableController.jpf?k_babaCode=19&k_raceNo=" & i & "&k_raceDate=" & _ myYear & "%2F" & myMonth & "%2F" & myDay With ActiveSheet.QueryTables.Add(Connection:=strUrl, Destination:=Range("A1")) .Name = "RaceMarkTableController.jpf?k_babaCode=19&k_raceNo=1&k_raceDate=2009%2F01%2F06" .FieldNames = True .RowNumbers = False .FillAdjacentFormulas = False .PreserveFormatting = True .RefreshOnFileOpen = False .BackgroundQuery = True .RefreshStyle = xlInsertDeleteCells .SavePassword = False .SaveData = True .AdjustColumnWidth = True .RefreshPeriod = 0 .WebSelectionType = xlSpecifiedTables .WebFormatting = xlWebFormattingNone .WebTables = "10" .WebPreFormattedTextToColumns = True .WebConsecutiveDelimitersAsOne = True .WebSingleBlockTextImport = False .WebDisableDateRecognition = False .WebDisableRedirections = False .Refresh BackgroundQuery:=False End With Next i End Sub
SALINGERさんありがとうございます。
マクロの自動記録ですか。良い方法ですね。教えていただいてありがとうございます。
SALINGERさんに作っていただいたマクロをいじりながら、ちょっとづつやってみます。
ありがとうございました。
SALINGERさんありがとうございます。
参考URLの通りやってみました。
素晴らしいですね!!
過去3年分の全ての地方レースにおいて同作業を行いたいのですが、お作りいただいたマクロは初心者にとって難しいレベルでしょうか?
VBAというものに触れたことがないのですが勉強すればなんとかなるものなんでしょうか?