• ベストアンサー

エクセルで土日の出走馬から自分の注目している馬の確認方法(2)

http://oshiete1.goo.ne.jp/qa2454134.html 以前↑ここでこういう質問をしたのですが、NO.4の回答で教えてもらったマクロでエクセルを実行したら去年までは出馬表の馬名を取り込んでいけたのですが、出馬表の馬名が取得できませんでした。 馬名はもう出ているのに、取り込んでいけませんでした。 どうすれば取り込んでいけるようになりますでしょうか? マクロのどこか1部分を訂正すればできるようになるのでしょうか? よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • web2525
  • ベストアンサー率42% (1219/2850)
回答No.11

最終修正 ----------- Sub レース取得() Application.ScreenUpdating = False 'マクロ実行非表示 ' '作業用シート作成 ' 保存 = ActiveSheet.Name ActiveSheet.Name = "data" Sheets.Add After:=ActiveSheet ActiveSheet.Name = "sagyou" URR = "URL;http://www.netkeiba.com" ' ' レース情報取得 Macro ' Sheets("sagyou").Select 表番号 = 15 Do Columns("B:B").Select Selection.Delete Shift:=xlToLeft With ActiveSheet.QueryTables.Add(Connection:=URR, Destination:=Range("b1")) .WebFormatting = xlWebFormattingNone .WebTables = 表番号 .Refresh BackgroundQuery:=False End With 表番号 = 表番号 + 1 If Range("B1").Value = "中央競馬" Then Exit Do Loop Columns("B:B").Select Selection.Delete Shift:=xlToLeft With ActiveSheet.QueryTables.Add(Connection:=URR, Destination:=Range("b1")) .WebTables = 表番号 .Refresh BackgroundQuery:=False End With Range("B1:" & Range("b1").End(xlToRight).Address).Select Selection.Copy Range("A1").Select Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:=False, Transpose:=True Columns("B:F").Select Selection.Delete Shift:=xlToLeft Range("a1").Activate Do ActiveCell.Offset(0, 1).Value = ActiveCell.Hyperlinks(1).Address ActiveCell.Offset(1, 0).Activate Loop Until ActiveCell.Value = "" ActiveCell.Offset(1, 0).Offset(-1, 0).Value = "END" ActiveCell.Offset(1, 0).Offset(-1, 1).Value = "END" ' ' レース取得 Macro ' 開催 = "B1" Do Do Until Right(Range("C1").Value, 2) = "日目" 表番号 = 表番号 + 1 Columns("C:L").Select Selection.Delete Shift:=xlToLeft With ActiveSheet.QueryTables.Add(Connection:="URL;" & Range(開催).Value, Destination:=Range("c1")) .WebTables = 表番号 .Refresh BackgroundQuery:=False End With Loop 表番号 = 表番号 + 1 Do Columns("C:P").Select Selection.Delete Shift:=xlToLeft With ActiveSheet.QueryTables.Add(Connection:="URL;" & Range(開催).Value, Destination:=Range("c1")) .WebTables = 表番号 .Refresh BackgroundQuery:=False End With If Left(Range("C1").Value, 1) = " " Then Else セルNo = 2 Range("a65535").End(xlUp).Select Do ActiveCell.Offset(1, 0).Select ActiveCell.Value = Range("C1").Value ActiveCell.Offset(1, 0).Select ActiveCell.Value = Range("C" & セルNo).Value セルNo = セルNo + 2 Loop Until Range("C" & セルNo).Value = "" End If Range("D2:" & Range("D65535").End(xlUp).Address).Select Selection.Copy Range("B65535").End(xlUp).Offset(1, 0).Select ActiveSheet.Paste 表番号 = 表番号 + 1 Loop Until Left(Range("C1").Value, 1) = " " 開催 = Range(開催).Offset(1, 0).Address Columns("C:P").Select Selection.Delete Shift:=xlToLeft 表番号 = 20 Loop Until Range(開催).Value = "END" Range("B65535").End(xlUp).Offset(1, 0).Value = "END" ' 'アドレス取得 ' Range("B1").Select Do ActiveCell.Offset(1, 0).Select Loop Until ActiveCell = "END" ActiveCell.Offset(1, 0).Select Do ActiveCell.Offset(0, 1).Value = ActiveCell.Hyperlinks(1).Address ActiveCell.Offset(2, 0).Activate Loop Until ActiveCell.Value = "END" ActiveCell.Offset(0, 1).Value = "END" ' '出馬表取得 ' レースNo = Range(開催).Address レースNo = Range(レースNo).Offset(1, 1).Address Do 表No = 25 Do Until Range("D1").Value = "馬名" Or Range("D1").Value = "枠" Or Range("D1") = "着" Or Range("D1").Value = " お気に入り馬出走情報" 表No = 表No + 1 Sheets("sagyou").Select Columns("D:O").Select Selection.Delete Shift:=xlToLeft With ActiveSheet.QueryTables.Add(Connection:= _ "URL;" & Range(レースNo).Value, Destination:=Range _ ("D1")) .WebFormatting = xlWebFormattingNone .WebTables = 表No .Refresh BackgroundQuery:=False End With If Range("E1").Value = "競馬新聞を見る" Then レース名 = 表No End If Loop Columns("D:O").Select Selection.Delete Shift:=xlToLeft With ActiveSheet.QueryTables.Add(Connection:= _ "URL;" & Range(レースNo).Value, Destination:=Range _ ("D1")) .WebFormatting = xlWebFormattingNone .WebTables = レース名 & "," & 表No .Refresh BackgroundQuery:=False End With ' 'レースデータ移動 ' Range("D1:" & Range("D1").End(xlDown).Address).Select Selection.Copy Sheets("data").Select Range("A65535").End(xlUp).Offset(2, 0).Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False Sheets("sagyou").Select Range("D1").End(xlDown).Offset(2, 0).Select If ActiveCell.Value <> " お気に入り馬出走情報" Then Do Until ActiveCell.Value = "馬名" ActiveCell.Offset(0, 1).Select Loop 左上 = ActiveCell.Address Do Until ActiveCell.Value = "厩舎" ActiveCell.Offset(0, 1).Select Loop 右下 = Range(Left(ActiveCell.Address, 2) & "65535").End(xlUp).Address Range(左上, 右下).Select Selection.Copy Sheets("data").Select Range("A65535").End(xlUp).Offset(1, 0).Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False Else Sheets("data").Select Range("A65535").End(xlUp).Offset(1, 0).Value = "取得できませんでした" End If Sheets("sagyou").Select レースNo = Range(レースNo).Offset(2, 0).Address Loop Until Range(レースNo) = "END" ' '作業シート削除 ' Sheets("data").Select Sheets("data").Name = 保存 Sheets("sagyou").Delete Columns("A:E").Select Range("A1363").Activate Columns("A:E").EntireColumn.AutoFit End Sub -----------

その他の回答 (11)

  • web2525
  • ベストアンサー率42% (1219/2850)
回答No.12

最終修正の補足 1. コピーして貼り付けた時にURL部分 URR = "URL;​http://www.netkeiba.com"   ←この部分 に?マーク等がついている場合は削除してください。 &#8203などとつく場合も同様 2. " お気に入り馬出走情報" ↑ここに半角スペースを1つ追加してください。 半角スペースは2個必要 2か所あります。 曜日、時間によってHPの体裁が変化するため、どの時点でもエラーなしで取得可能なように対応するため、HP内の表を順に読み込み必要な表を探し出している関係で取得完了まで5分程度(ご利用の環境により変化します)かかります。 多分これ以上変更する必要はないと思います。

masaro55
質問者

お礼

回答ありがとうございました。 スムーズに全レース取得できました。 この度も本当にありがとうございました。 また機会があればよろしくお願いします。

  • web2525
  • ベストアンサー率42% (1219/2850)
回答No.10

検証の結果、IEから張り付けた場合エラーになるようなので、一部修正してください。 修正1 '作業用シート作成 ' 保存 = ActiveSheet.Name ActiveSheet.Name = "data" Sheets.Add After:=ActiveSheet ActiveSheet.Name = "sagyou" URR = "URL;http://www.netkeiba.com"  ←これを追加 ' ' レース情報取得 Macro 修正2 With ActiveSheet.QueryTables.Add(Connection:="URL;​http://www.netkeiba.com",​ Destination:=Range("b1")) この部分の "URL;​http://www.netkeiba.com" を URRに変えてください。 2か所あります。 この修正で問題なく動作すると思います。 HPの体裁が変化しても自動で取得する関係で、完了まで数分かかりますが、取得曜日・開催数に影響されず取得可能となっていると思いますが、HP更新時に取得しようとするとエラーになるかもしれません。

masaro55
質問者

お礼

回答ありがとうございました。 やってみましたが、バッチリできました。 現在は土日の特別だけ出走馬名が出てるのでそこだけちゃんと出ました。 木曜になって今週土日の分が全部出せるかの確認できるまで一応締め切らないでおこうと思います。 今回も度重なる詳しい回答ありがとうございました。

  • web2525
  • ベストアンサー率42% (1219/2850)
回答No.9

修正バージョンを投稿します ------------------------ Sub レース取得() Application.ScreenUpdating = False 'マクロ実行非表示 ' '作業用シート作成 ' 保存 = ActiveSheet.Name ActiveSheet.Name = "data" Sheets.Add After:=ActiveSheet ActiveSheet.Name = "sagyou" ' ' レース情報取得 Macro ' Sheets("sagyou").Select 表番号 = 15 Do Columns("B:B").Select Selection.Delete Shift:=xlToLeft With ActiveSheet.QueryTables.Add(Connection:="URL;http://www.netkeiba.com", Destination:=Range("b1")) .WebFormatting = xlWebFormattingNone .WebTables = 表番号 .Refresh BackgroundQuery:=False End With 表番号 = 表番号 + 1 If Range("B1").Value = "中央競馬" Then Exit Do Loop Columns("B:B").Select Selection.Delete Shift:=xlToLeft With ActiveSheet.QueryTables.Add(Connection:="URL;http://www.netkeiba.com", Destination:=Range("b1")) .WebTables = 表番号 .Refresh BackgroundQuery:=False End With Range("B1:" & Range("b1").End(xlToRight).Address).Select Selection.Copy Range("A1").Select Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:=False, Transpose:=True Columns("B:F").Select Selection.Delete Shift:=xlToLeft Range("a1").Activate Do ActiveCell.Offset(0, 1).Value = ActiveCell.Hyperlinks(1).Address ActiveCell.Offset(1, 0).Activate Loop Until ActiveCell.Value = "" ActiveCell.Offset(1, 0).Offset(-1, 0).Value = "END" ActiveCell.Offset(1, 0).Offset(-1, 1).Value = "END" ' ' レース取得 Macro ' 開催 = "B1" Do Do Until Right(Range("C1").Value, 2) = "日目" 表番号 = 表番号 + 1 Columns("C:L").Select Selection.Delete Shift:=xlToLeft With ActiveSheet.QueryTables.Add(Connection:="URL;" & Range(開催).Value, Destination:=Range("c1")) .WebTables = 表番号 .Refresh BackgroundQuery:=False End With Loop 表番号 = 表番号 + 1 Do Columns("C:P").Select Selection.Delete Shift:=xlToLeft With ActiveSheet.QueryTables.Add(Connection:="URL;" & Range(開催).Value, Destination:=Range("c1")) .WebTables = 表番号 .Refresh BackgroundQuery:=False End With If Left(Range("C1").Value, 1) = " " Then Else セルNo = 2 Range("a65535").End(xlUp).Select Do ActiveCell.Offset(1, 0).Select ActiveCell.Value = Range("C1").Value ActiveCell.Offset(1, 0).Select ActiveCell.Value = Range("C" & セルNo).Value セルNo = セルNo + 2 Loop Until Range("C" & セルNo).Value = "" End If Range("D2:" & Range("D65535").End(xlUp).Address).Select Selection.Copy Range("B65535").End(xlUp).Offset(1, 0).Select ActiveSheet.Paste 表番号 = 表番号 + 1 Loop Until Left(Range("C1").Value, 1) = " " 開催 = Range(開催).Offset(1, 0).Address Columns("C:P").Select Selection.Delete Shift:=xlToLeft 表番号 = 20 Loop Until Range(開催).Value = "END" Range("B65535").End(xlUp).Offset(1, 0).Value = "END" ' 'アドレス取得 ' Range("B1").Select Do ActiveCell.Offset(1, 0).Select Loop Until ActiveCell = "END" ActiveCell.Offset(1, 0).Select Do ActiveCell.Offset(0, 1).Value = ActiveCell.Hyperlinks(1).Address ActiveCell.Offset(2, 0).Activate Loop Until ActiveCell.Value = "END" ActiveCell.Offset(0, 1).Value = "END" ' '出馬表取得 ' レースNo = Range(開催).Address レースNo = Range(レースNo).Offset(1, 1).Address Do 表No = 25 Do Until Range("D1") = "馬名" 表No = 表No + 1 Sheets("sagyou").Select Columns("D:O").Select Selection.Delete Shift:=xlToLeft With ActiveSheet.QueryTables.Add(Connection:= _ "URL;" & Range(レースNo).Value, Destination:=Range _ ("D1")) .WebFormatting = xlWebFormattingNone .WebTables = 表No .Refresh BackgroundQuery:=False End With If Range("E1").Value = "競馬新聞を見る" Then レース名 = 表No End If Loop Columns("D:O").Select Selection.Delete Shift:=xlToLeft With ActiveSheet.QueryTables.Add(Connection:= _ "URL;" & Range(レースNo).Value, Destination:=Range _ ("D1")) .WebFormatting = xlWebFormattingNone .WebTables = レース名 & "," & 表No .Refresh BackgroundQuery:=False End With ' 'レースデータ移動 ' Range("D1:" & Range("D1").End(xlDown).Address).Select Selection.Copy Sheets("data").Select Range("A65535").End(xlUp).Offset(2, 0).Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False Sheets("sagyou").Select Range("D1").End(xlDown).Offset(2, 0).Select Do Until ActiveCell.Value = "馬名" ActiveCell.Offset(0, 1).Select Loop 左上 = ActiveCell.Address Do Until ActiveCell.Value = "厩舎" ActiveCell.Offset(0, 1).Select Loop 右下 = Range(Left(ActiveCell.Address, 2) & "65535").End(xlUp).Address Range(左上, 右下).Select Selection.Copy Sheets("data").Select Range("A65535").End(xlUp).Offset(1, 0).Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False Sheets("sagyou").Select レースNo = Range(レースNo).Offset(2, 0).Address Loop Until Range(レースNo) = "END" ' '作業シート削除 ' Sheets("data").Select Sheets("data").Name = 保存 Sheets("sagyou").Delete Columns("A:E").Select Range("A1363").Activate Columns("A:E").EntireColumn.AutoFit End Sub ------------------------

  • web2525
  • ベストアンサー率42% (1219/2850)
回答No.8

現象確認しました 赤字になっている部分のURL前後の?の削除が必要です。 もう一点 If Range("D1").Value <> " お気に入り馬出走情報" Then この部分の<お気に入り馬出走情報>の前に半角スペースを1つ追加してください。 " お気に入り馬出走情報" ↑ここには半角スペースが2個必要 IEでこのページを表示した場合体裁が一部変更になるようです。

  • web2525
  • ベストアンサー率42% (1219/2850)
回答No.7

With ActiveSheet.QueryTables.Add(Connection:="URL;http://www.netkeiba.com", Destination:=Range("b1")) No6に余分なコードが入っているので再度回答

  • web2525
  • ベストアンサー率42% (1219/2850)
回答No.6

With ActiveSheet.QueryTables.Add(Connection:="URL;?​http://www.netkeiba.com",?​ 私の環境ではそのまま張り付けても動きましたので気づきませんでしたが、もしかしてこの部分が2行に分かれていますか? "URL;?​の?を消し、 Destination:=Range("b1"))の前にカーソルを持っていき","バックスペースで?までを消してください。 With ActiveSheet.QueryTables.Add(Connection:="URL;​http://www.netkeiba.com",​ Destination:=Range("b1")) この部分が1行になるように変更してください。

  • web2525
  • ベストアンサー率42% (1219/2850)
回答No.5

再度修正しました、修正箇所は一部分なのですが修正後のマクロを掲載します。 取得するタイミングによっては、うまく取れない場合がありますがこれは掲載先のHPの問題ですので解決不能です。 投稿前に試した時は正常取得できました。 ・木曜以前の特別レース登録馬情報、 ・木曜以降の登録馬確定、 ・レース確定後の着順情報 すべて取得可能のはずです。 --------------------------- Sub レース取得() Application.ScreenUpdating = False 保存 = ActiveSheet.Name ActiveSheet.Name = "data" Sheets.Add After:=ActiveSheet ActiveSheet.Name = "sagyou" ' ' レース情報取得 Macro ' Sheets("sagyou").Select With ActiveSheet.QueryTables.Add(Connection:="URL;http://www.netkeiba.com", Destination:=Range("b1")) .WebTables = "17" .Refresh BackgroundQuery:=False End With Rows("2:5").Select Selection.Delete Shift:=xlUp Range("B1").Select Selection.Copy Range("A1").Select ActiveSheet.Paste Range("C1").Select Selection.Copy Range("A2").Select ActiveSheet.Paste Range("D1").Select Selection.Copy Range("A3").Select ActiveSheet.Paste Columns("B:D").Select Selection.Delete Shift:=xlToLeft Range("a1").Activate Do ActiveCell.Offset(0, 1).Value = ActiveCell.Hyperlinks(1).Address ActiveCell.Offset(1, 0).Activate Loop Until ActiveCell.Value = "" ActiveCell.Offset(1, 0).Offset(-1, 0).Value = "END" ActiveCell.Offset(1, 0).Offset(-1, 1).Value = "END" ' ' レース取得 Macro ' 開催 = "B1" Do Until Range(開催).Value = "END" テーブルNo = 29 Do Columns("C:E").Select Selection.Delete Shift:=xlToLeft With ActiveSheet.QueryTables.Add(Connection:="URL;" & Range(開催).Value, Destination:=Range("c1")) .WebTables = テーブルNo .Refresh BackgroundQuery:=False End With If Left(Range("C1").Value, 1) = " " Then Else セルNo = 2 Range("a65535").End(xlUp).Select Do ActiveCell.Offset(1, 0).Select ActiveCell.Value = Range("C1").Value ActiveCell.Offset(1, 0).Select ActiveCell.Value = Range("C" & セルNo).Value セルNo = セルNo + 2 Loop Until Range("C" & セルNo).Value = "" End If Range("D2:" & Range("D65535").End(xlUp).Address).Select Selection.Copy Range("B65535").End(xlUp).Offset(1, 0).Select ActiveSheet.Paste テーブルNo = テーブルNo + 1 Loop Until Left(Range("C1").Value, 1) = " " 開催 = Range(開催).Offset(1, 0).Address Loop Columns("C:C").Select Selection.Delete Shift:=xlToLeft Range("B1").Select Do ActiveCell.Offset(1, 0).Select Loop Until ActiveCell = "END" ActiveCell.Offset(1, 0).Select Do ActiveCell.Offset(0, 1).Value = ActiveCell.Hyperlinks(1).Address ActiveCell.Offset(2, 0).Activate If ActiveCell.Value = "" Then ActiveCell.Offset(1, 0).Activate If ActiveCell.Value = "END" Then Exit Do End If End If Loop Until ActiveCell.Value = "" ' レースデータ取得 レースNo = Range(開催).Offset(1, 1).Address Do Sheets("sagyou").Select Columns("D:O").Select Selection.Delete Shift:=xlToLeft With ActiveSheet.QueryTables.Add(Connection:= _ "URL;" & Range(レースNo).Value, Destination:=Range _ ("D1")) .WebFormatting = xlWebFormattingNone .WebTables = "35" .Refresh BackgroundQuery:=False End With If Range("D1").Value = "想定馬" Then Columns("D:O").Select Selection.Delete Shift:=xlToLeft With ActiveSheet.QueryTables.Add(Connection:="URL;" & Range(レースNo).Value, Destination:=Range("D1")) .WebFormatting = xlWebFormattingNone .WebTables = "36" .Refresh BackgroundQuery:=False End With End If If Range("D1").Value <> " お気に入り馬出走情報" Then 'レースデータ移動 Range(レースNo).Offset(0, -2).Select Range(ActiveCell.Address, ActiveCell.Offset(1, 1).Address).Select Selection.Copy Sheets("data").Select Range("A65535").End(xlUp).Offset(2, 0).Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False Sheets("sagyou").Select Range("D1").Select Do Until ActiveCell.Value = "馬名" ActiveCell.Offset(0, 1).Select Loop 左上 = ActiveCell.Address Do Until ActiveCell.Value = "厩舎" ActiveCell.Offset(0, 1).Select Loop 右下 = Range(Left(ActiveCell.Address, 2) & "65535").End(xlUp).Address Range(左上, 右下).Select Selection.Copy Sheets("data").Select Range("A65535").End(xlUp).Offset(1, 0).Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False End If Sheets("sagyou").Select レースNo = Range(レースNo).Offset(2, 0).Address If Range(レースNo).Value = "" And Range(レースNo).Offset(2, 0) = "" And Range(レースNo).Offset(4, 0) = "" Then Exit Do End If Loop Sheets("data").Select Sheets("data").Name = 保存 Sheets("sagyou").Delete Columns("A:E").Select Range("A1363").Activate Columns("A:E").EntireColumn.AutoFit Application.ScreenUpdating = True End Sub

masaro55
質問者

お礼

回答ありがとうございました。 また同じようにエラーになってしまいました。 With ActiveSheet.QueryTables.Add(Connection:="URL;?http://www.netkeiba.com",? Destination:=Range("b1")) エラーの後この部分が赤くなっています。 なにか関係あるのでしょうか?

  • web2525
  • ベストアンサー率42% (1219/2850)
回答No.4

今回のマクロは、新規に作成したものですのす。 1)新しいbookを開いて、[ツール]⇒[マクロ]⇒[マクロ]を開く 2)[マクロ名]に”レース取得”と入力し[作成]をクリック。 3)表示されている Sub レース取得() End Sub を削除してマクロを貼り付けて保存([X]で閉じると自動的に保存されます)、ブックも一旦保存してください、次回からは保存したブックで取得可能になります。 4)実行するときには ツール]⇒[マクロ]⇒[マクロ]を開き、[レース取得]を選択して、[実行]をクリック。 今回のように3日開催とか、2開場以上開催時には取得完了までス分かかる可能性があります。 今回は、会場や日付などの指定なしですべて取り込む方式になっています(多分3開場以上も自動対応するはずです)。 既存のブックに取り込む際には、マクロを追加した後にシートを新たに追加し、追加したシートを開いた状態で実行してください。 シートを追加していけば、同じブックに何回でも出馬表作成が可能です。

masaro55
質問者

お礼

回答ありがとうございます。 新しいbookを開いて教えてもらった手順でNO.3のマクロを貼り付けてやったのですが、 コンパイルエラー 構文エラー と出てしまい巻いた。今度の木曜の出馬表が出てからじゃないとダメなんでしょうか?どうすればいいかよろしくお願いします。

  • web2525
  • ベストアンサー率42% (1219/2850)
回答No.3

再修正 ----------ここから---------- Sub レース取得() Application.ScreenUpdating = False 保存 = ActiveSheet.Name ActiveSheet.Name = "data" Sheets.Add After:=ActiveSheet ActiveSheet.Name = "sagyou" ' ' レース情報取得 Macro ' Sheets("sagyou").Select With ActiveSheet.QueryTables.Add(Connection:="URL;http://www.netkeiba.com", Destination:=Range("b1")) .WebTables = "17" .Refresh BackgroundQuery:=False End With Rows("2:5").Select Selection.Delete Shift:=xlUp Range("B1").Select Selection.Copy Range("A1").Select ActiveSheet.Paste Range("C1").Select Selection.Copy Range("A2").Select ActiveSheet.Paste Range("D1").Select Selection.Copy Range("A3").Select ActiveSheet.Paste Columns("B:D").Select Selection.Delete Shift:=xlToLeft Range("a1").Activate Do ActiveCell.Offset(0, 1).Value = ActiveCell.Hyperlinks(1).Address ActiveCell.Offset(1, 0).Activate Loop Until ActiveCell.Value = "" ActiveCell.Offset(1, 0).Offset(-1, 0).Value = "END" ActiveCell.Offset(1, 0).Offset(-1, 1).Value = "END" ' ' レース取得 Macro ' 開催 = "B1" Do Until Range(開催).Value = "END" テーブルNo = 29 Do Columns("C:E").Select Selection.Delete Shift:=xlToLeft With ActiveSheet.QueryTables.Add(Connection:="URL;" & Range(開催).Value, Destination:=Range("c1")) .WebTables = テーブルNo .Refresh BackgroundQuery:=False End With If Left(Range("C1").Value, 1) = " " Then Else セルNo = 2 Range("a65535").End(xlUp).Select Do ActiveCell.Offset(1, 0).Select ActiveCell.Value = Range("C1").Value ActiveCell.Offset(1, 0).Select ActiveCell.Value = Range("C" & セルNo).Value セルNo = セルNo + 2 Loop Until Range("C" & セルNo).Value = "" End If Range("D2:" & Range("D65535").End(xlUp).Address).Select Selection.Copy Range("B65535").End(xlUp).Offset(1, 0).Select ActiveSheet.Paste テーブルNo = テーブルNo + 1 Loop Until Left(Range("C1").Value, 1) = " " 開催 = Range(開催).Offset(1, 0).Address Loop Columns("C:C").Select Selection.Delete Shift:=xlToLeft Range("B5").Activate Do ActiveCell.Offset(0, 1).Value = ActiveCell.Hyperlinks(1).Address ActiveCell.Offset(2, 0).Activate If ActiveCell.Value = "" Then ActiveCell.Offset(1, 0).Activate If ActiveCell.Value = "END" Then Exit Do End If End If Loop Until ActiveCell.Value = "" ' レースデータ取得 レースNo = Range(開催).Offset(1, 1).Address Do Sheets("sagyou").Select Columns("D:O").Select Selection.Delete Shift:=xlToLeft With ActiveSheet.QueryTables.Add(Connection:= _ "URL;" & Range(レースNo).Value, Destination:=Range _ ("D1")) .WebFormatting = xlWebFormattingNone .WebTables = "35" .Refresh BackgroundQuery:=False End With If Range("D1").Value = "想定馬" Then Columns("D:O").Select Selection.Delete Shift:=xlToLeft With ActiveSheet.QueryTables.Add(Connection:="URL;" & Range(レースNo).Value, Destination:=Range("D1")) .WebFormatting = xlWebFormattingNone .WebTables = "36" .Refresh BackgroundQuery:=False End With End If If Range("D1").Value <> " お気に入り馬出走情報" Then 'レースデータ移動 Range(レースNo).Offset(0, -2).Select Range(ActiveCell.Address, ActiveCell.Offset(1, 1).Address).Select Selection.Copy Sheets("data").Select Range("A65535").End(xlUp).Offset(1, 0).Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False Sheets("sagyou").Select Range("D1").Select Do Until ActiveCell.Value = "馬名" ActiveCell.Offset(0, 1).Select Loop 左上 = ActiveCell.Address Do Until ActiveCell.Value = "厩舎" ActiveCell.Offset(0, 1).Select Loop 右下 = Range(Left(ActiveCell.Address, 2) & "65535").End(xlUp).Address Range(左上, 右下).Select Selection.Copy Sheets("data").Select Range("A65535").End(xlUp).Offset(1, 0).Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False End If Sheets("sagyou").Select レースNo = Range(レースNo).Offset(2, 0).Address If Range(レースNo).Value = "" And Range(レースNo).Offset(2, 0) = "" And Range(レースNo).Offset(4, 0) = "" Then Exit Do End If Loop Sheets("data").Select Sheets("data").Name = 保存 Sheets("sagyou").Delete Columns("A:E").Select Range("A1363").Activate Columns("A:E").EntireColumn.AutoFit Application.ScreenUpdating = True End Sub ----------ここまで----------

masaro55
質問者

お礼

回答ありがとうございます。 前の質問の時の回答者と同じ方ですね!今回もよろしくお願いします。 回答いただいたマクロはどこに貼り付ければいいのでしょうか? よろしくお願いします。

  • web2525
  • ベストアンサー率42% (1219/2850)
回答No.2

No1のマクロだとレース確定後はエラーになってしまうので、修正しました。 ----------ここから---------- Sub レース取得() Application.ScreenUpdating = False 保存 = ActiveSheet.Name ActiveSheet.Name = "data" Sheets.Add After:=ActiveSheet ActiveSheet.Name = "sagyou" ' ' レース情報取得 Macro ' Sheets("sagyou").Select With ActiveSheet.QueryTables.Add(Connection:="URL;http://www.netkeiba.com", Destination:=Range("b1")) .WebTables = "17" .Refresh BackgroundQuery:=False End With Rows("2:5").Select Selection.Delete Shift:=xlUp Range("B1").Select Selection.Copy Range("A1").Select ActiveSheet.Paste Range("C1").Select Selection.Copy Range("A2").Select ActiveSheet.Paste Range("D1").Select Selection.Copy Range("A3").Select ActiveSheet.Paste Columns("B:D").Select Selection.Delete Shift:=xlToLeft Range("a1").Activate Do ActiveCell.Offset(0, 1).Value = ActiveCell.Hyperlinks(1).Address ActiveCell.Offset(1, 0).Activate Loop Until ActiveCell.Value = "" ActiveCell.Offset(1, 0).Offset(-1, 0).Value = "END" ActiveCell.Offset(1, 0).Offset(-1, 1).Value = "END" ' ' レース取得 Macro ' 開催 = "B1" Do Until Range(開催).Value = "END" テーブルNo = 29 Do Columns("C:E").Select Selection.Delete Shift:=xlToLeft With ActiveSheet.QueryTables.Add(Connection:="URL;" & Range(開催).Value, Destination:=Range("c1")) .WebTables = テーブルNo .Refresh BackgroundQuery:=False End With If Left(Range("C1").Value, 1) = " " Then Else セルNo = 2 Range("a65535").End(xlUp).Select Do ActiveCell.Offset(1, 0).Select ActiveCell.Value = Range("C1").Value ActiveCell.Offset(1, 0).Select ActiveCell.Value = Range("C" & セルNo).Value セルNo = セルNo + 2 Loop Until Range("C" & セルNo).Value = "" End If Range("D2:" & Range("D65535").End(xlUp).Address).Select Selection.Copy Range("B65535").End(xlUp).Offset(1, 0).Select ActiveSheet.Paste テーブルNo = テーブルNo + 1 Loop Until Left(Range("C1").Value, 1) = " " 開催 = Range(開催).Offset(1, 0).Address Loop Columns("C:C").Select Selection.Delete Shift:=xlToLeft Range("B5").Activate Do ActiveCell.Offset(0, 1).Value = ActiveCell.Hyperlinks(1).Address ActiveCell.Offset(2, 0).Activate If ActiveCell.Value = "" Then ActiveCell.Offset(1, 0).Activate If ActiveCell.Value = "END" Then Exit Do End If End If Loop Until ActiveCell.Value = "" ' レースデータ取得 レースNo = Range(開催).Offset(1, 1).Address Do Sheets("sagyou").Select Columns("D:M").Select Selection.Delete Shift:=xlToLeft With ActiveSheet.QueryTables.Add(Connection:= _ "URL;" & Range(レースNo).Value, Destination:=Range _ ("D1")) .WebFormatting = xlWebFormattingNone .WebTables = "35" .Refresh BackgroundQuery:=False End With If Range("D1").Value = "想定馬" Then With ActiveSheet.QueryTables.Add(Connection:="URL;" & Range(レースNo).Value, Destination:=Range("D1")) .WebFormatting = xlWebFormattingNone .WebTables = "36" .Refresh BackgroundQuery:=False End With End If If Range("D1").Value <> " お気に入り馬出走情報" Then 'レースデータ移動 Range(レースNo).Offset(0, -2).Select Range(ActiveCell.Address, ActiveCell.Offset(1, 1).Address).Select Selection.Copy Sheets("data").Select Range("A65535").End(xlUp).Offset(1, 0).Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False Sheets("sagyou").Select Range("D1").Select Do Until ActiveCell.Value = "馬名" ActiveCell.Offset(0, 1).Select Loop 左上 = ActiveCell.Address Do Until ActiveCell.Value = "厩舎" ActiveCell.Offset(0, 1).Select Loop 右下 = Range(Left(ActiveCell.Address, 2) & "65535").End(xlUp).Address Range(左上, 右下).Select Selection.Copy Sheets("data").Select Range("A65535").End(xlUp).Offset(1, 0).Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False End If Sheets("sagyou").Select レースNo = Range(レースNo).Offset(2, 0).Address If Range(レースNo).Value = "" And Range(レースNo).Offset(2, 0) = "" And Range(レースNo).Offset(4, 0) = "" Then Exit Do End If Loop Sheets("data").Select Sheets("data").Name = 保存 Sheets("sagyou").Delete Columns("A:E").Select Range("A1363").Activate Columns("A:E").EntireColumn.AutoFit Application.ScreenUpdating = True End Sub ---------ここまで----------

関連するQ&A

  • エクセルで土日の出走馬から自分の注目している馬の確認方法

    これまでのJRAのホームページ右上に表示されていた、出走馬名表で木曜日の16:00頃に土、日の全出走馬が1つのページで1日1場の全レースの出走馬名が表示されていましたが、ホームページのリニューアルでそれがなくなってしまいました。 そのページをctrl+aで全選択してエクセルファイルにコピーして(3場開催の場合この作業×6回)、ハイパーリンクで自分の注目している馬が出ているかであぶりだしていました。 http://oshiete1.goo.ne.jp/kotaeru.php3?q=1431816 ここで教えてもらいました。 リニューアルされて1ページに1レースと細かくなったのでこの作業ができなくなってしまいました。(やろうと思えばできますが、1レースに1つのページになってしまったので6回の作業が×12で72回の作業になってしまいます) どうすればこのような作業ができるようになりますでしょうか?出走しているか確認したい馬が200頭程いるので1頭ずつ確認はとてもできません。 http://race.netkeiba.com/?id=c1007 例えば↑のページで各レースの2歳未勝利とかをクリックするとリンク先にそのレースの出走馬の名前が全頭出たページに行くのですが、リンク先ページをまとめてババーッとひとつのエクセルに貼り付けたりできたら1レースずつ選択貼り付け、選択貼り付けの作業をしなくてもいいのですが、そういうのは可能でしょうか? 有料のサービス以外で注目馬の出走確認をしたいのですが、できるだけ軽い作業でできる方法を教えてほしいです。よろしくお願いします。

  • 教えてもらったマクロが動作しません。解決方法をお願いします。

    http://oshiete1.goo.ne.jp/qa2643770.html ここで教えてもらったNO.11,12 マクロなのですが 馬名の下の ActiveCell.Offset(0, 1).Select という部分が黄色くなっているせいかエラーとなって中断されてしまいます。 正常に動作させるようにするにはどうしたらよいでしょうか? 回答よろしくお願いします。

  • 土日の出走馬から自分の注目している馬の確認方法

    これまでのJRAのホームページ右上に表示されていた、出走馬名表で木曜日の16:00頃に土、日の全出走馬が1つのページで1日1場の全レースの出走馬名が表示されていましたが、ホームページのリニューアルでそれがなくなってしまいました。 そのページをctrl+aで全選択してエクセルファイルにコピーして(3場開催の場合この作業×6回)、自分の注目している馬が出ているかハイパーリンクであぶりだしていました。 リニューアルされて1ページに1レースと細かくなったのでこの作業ができなくなってしまいました。(やろうと思えばできますが、1レースに1つのページになってしまったので6回の作業が×12で72回の作業になってしまいます) どうすればこのような作業ができるようになりますでしょうか?出走しているか確認したい馬が200頭程いるので1頭ずつ確認はとてもできません。 有料のサービス以外で注目馬の出走確認をしたいのですが、できるだけ軽い作業でできる方法を教えてもらえないでしょうか?よろしくお願いします。

  • [ No.964924 質問:EXCELで同じ内容の行を削除 ]について詳しく教えてください。

    エクセルで同じ内容のセルのある行を自動的に削除したく、No.964924の回答No.2を実行したいのですが、マクロがまったくわかりません。このマクロはどのように記録、実行するのでしょうか。 勉強不足で申し訳ありません。 http://oshiete1.goo.ne.jp/kotaeru.php3?q=964924

  • Windowsのタスク機能からExcelを開きマクロを実行しようと思っても、Excelがアクティブにならず、マクロが実行されない。

    仕事で、指定の時間にExcelで作ったマクロを実行し、帳票を作らなくてはなりません。 PCの前にいない時間に、自動的に実行される必要があります。 マクロはExcelを開くと同時に実行されるよう、「Auto_Open」を使いました。 あとは自動にこのExcelが開けばいいので、こちらで検索したところ、タスク機能を使うとExcelを指定の時間に開くことができると知り、試してみました。 http://oshiete1.goo.ne.jp/qa4146028.html しかし、Excelは開くのですが、アクティブの状態にはならず、マクロが実行されません。 タスク機能ではExcelを開いてマクロを実行することはできないのでしょうか? タスク機能は、ウィザードに従って設定してます。プロパティからは特に設定していません。 どなたか教えてください。 宜しくお願いします。

  • Excelの「塗りつぶしの色」の取得方法

    Excel 2010 にて 添付画像の赤枠で囲まれた部分の色をマクロ(VBA)で取得する方法はあるでしょうか? なぜか添付画像がうまく表示できないようなので、わかりづらいですが ホームリボン⇒フォント⇒塗りつぶしの色の部分です。 デフォルトままマクロを実行すると黄色(255,255,0)が取得でき、 これを赤に変更すると、赤(255,0,0)が取得できるようなイメージです。 この値を使って背景色の塗りつぶしを行うマクロを作りたいと思っています。

  • JRAの出馬表取得

    知人から出馬表(予想)管理?の様なCGIを作成して欲しいと頼まれました。 どうせ作るなら完成度が高い物を作りたいと思っているのですが、、、 CGIがJRAのホームページを自動解析し出馬表データ(馬番や馬名)を取得。 取得したデータに予想を記載し保存&htmlで公開。 の様な事をしても大丈夫なのでしょうか?

  • このマクロを実行し、表示させるにはどうしたらよいですか?

    初心者です。WinXP、Excel 2002を使用。 http://oshiete1.goo.ne.jp/kotaeru.php3?q=1432630 のページ の回答者No.2様のマクロを実行し、表示させるにはどうしたらよいですか? 私のやり方(解釈)が間違っているのだと思いますがこのままコピーし、実行してみましたが、エラーがでます。 1、コピー&ペーストから、もお少し、詳しく教えて  下さいませ。 2、Module1とModule2を個々のマクロで実行し、表示  する方法も併せて教えて下さいませ。

  • エクセルのマクロでワードのマクロに引数を渡す方法

    エクセルでワードのマクロを実行するのに下記のQAを参考にさせていただきました。 http://okwave.jp/qa647036.html あと、ワードのマクロに引数を渡してやりたいのですがやり方がわかりません。 結構いろんなサイトを回りましたがなかったので、質問させて頂きました。 宜しくお願いしますm(__)m

  • 注目している馬が出た日付、レース数、条件を表示させるには

    JRAのホームページの木曜日に出走馬名表というのが↓のように掲載されるのですが(2レース分だけコピーして貼り付けました。これが開催場所×12レース分あります。)そこから自分の注目している馬数十頭の内、出走する馬がいたら分かるように出る馬は http://oshiete1.goo.ne.jp/kotaeru.php3?q=1431816 ↑こちらの方法であぶりだせたのですがそのあぶりだせた中の馬が出るレースの日付→下の表で言えば 3月 18日、レース数→1、場所→中山、距離→1200m ダ、頭数→16頭 以上の項目をシート3のあぶりだされた出走する馬名の横に表示させるにはどうすればよいでしょうか? シート3のA1に馬名、B1に出る馬チェックの数式、C1に日付、D1に場所、F1にレース数、I1に頭数、Q1に距離というように、C,D,F,I、Qの5つをこの馬名の横の所定の位置に持ってきたいのです。中でもC,D,Qの3つは特に持ってきたいです。他の2つもできたら持ってきたいです。 2006年 第 2回 中山競馬 第 7日 ( 3月 18日) 1R  16頭 サラ系3歳(父)[指定] 3歳未勝利 1200m ダート・右  馬齢  発走 10:00 (父) エイコーロマン 牡 3 56 勝浦正樹 (父) エフテークリニック 牡 3 56 江田照男 (父) オオシマセイラー 牝 3 51 ▲ 的場勇人 (父) キングオブパンサー 牡 3 56 柴田善臣 (父) サイレンスラダメス 牡 3 56 後藤浩輝 2R  16頭 サラ系3歳牝[指定] 3歳未勝利 1800m ダート・右  馬齢  発走 10:30 (父) アッパレムスメ 牝 3 54 吉永護 アトマイザー 牝 3 54 伊藤直人 B (父) アプローズライト 牝 3 51 ▲ 黛弘人 シート1に↑のようなその週の出走馬名表があります。 10頭くらいその週に走る馬がいる場合でもまとめて一気にできるといいのですがこんなことは可能でしょうか?

専門家に質問してみよう