人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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

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

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


●質問者: koosuke07024747
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:Web アクセス エクセル クエリ タイム
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● SALINGER
●100ポイント

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
◎質問者からの返答

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

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

素晴らしいですね!!

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

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


2 ● SALINGER
●100ポイント

実は私も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さんに作っていただいたマクロをいじりながら、ちょっとづつやってみます。

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ