下記ページの、『成績表』の部分のエクセルへの取り込み方に関する質問です。


競争成績(基本的にタイム)のデータベースの作成を、エクセルかアクセスを使用して行いたいと考えています。

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

回答の条件
  • 1人50回まで
  • 登録:2009/01/15 21:36:41
  • 終了:2009/01/15 23:36:16

回答(2件)

id:SALINGER No.1

SALINGER回答回数3454ベストアンサー獲得回数9692009/01/15 22:08:52

ポイント100pt

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
id:koosuke07024747

SALINGERさんありがとうございます。

参考URLの通りやってみました。

素晴らしいですね!!

過去3年分の全ての地方レースにおいて同作業を行いたいのですが、お作りいただいたマクロは初心者にとって難しいレベルでしょうか?

VBAというものに触れたことがないのですが勉強すればなんとかなるものなんでしょうか?

2009/01/15 22:31:14
id:SALINGER No.2

SALINGER回答回数3454ベストアンサー獲得回数9692009/01/15 23:21:52

ポイント100pt

実は私も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
id:koosuke07024747

SALINGERさんありがとうございます。

マクロの自動記録ですか。良い方法ですね。教えていただいてありがとうございます。

SALINGERさんに作っていただいたマクロをいじりながら、ちょっとづつやってみます。

ありがとうございました。

2009/01/15 23:35:32

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません