[[20210723183601]] 『競馬の出馬表をサイトから抽出したのですが』(競馬すき) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『競馬の出馬表をサイトから抽出したのですが』(競馬すき)

はじめまして!
マクロで競馬の出馬表をサイトから抽出したのですが
抽出したところ

ハイスペックマン | ワールドエース
牡2/鹿毛 小桧山 悟(美浦) | エーシンレベルハイ
となってて
それを

ハイスペックマン| 牡2/鹿毛 小桧山 悟(美浦)| ワールドエース| エーシンレベルハイ

みたいにしたいのですがどうすればよろしいでしょうか

よろしくおねがいします

< 使用 Excel:Excel2019、使用 OS:Windows10 >


 >マクロで競馬の出馬表をサイトから抽出したのですが 
 >抽出したところ 

 どこのサイトから、どのようなコードで抽出したのでしょう?
(通りすがり) 2021/07/23(金) 19:02

 最近競馬関連の質問が多いような・・・。

[[20210118174756]] 『ここって』(ヒロユキ) 
[[20210629194817]] 『コードが動かなくなりました』(うーん)
(通りすがり) 2021/07/23(金) 19:04


通りすがりさんコメントありがとうございます
抽出するコードは
    Option Explicit

 Sub 出馬表蓄積3()
  Application.ScreenUpdating = False
    Const csCode As String = "URL;https://umanity.jp/racedata/race_8_4.php?code=XXXX"
    Dim strURL As String
strURL = Get開催コード生成(i)
   strURL = Replace(csCode, "XXXX", strURL)
    Set出馬表取得 strURL

    Dim 処理前シート As Worksheet
    Dim 処理後シート As Worksheet
    Dim 元データ As Range
    Application.DisplayAlerts = False
Dim ws As Worksheet
Set ws = ActiveSheet
    Set 処理前シート = ActiveSheet
    Set 処理後シート = Worksheets("テスト")
    Set 元データ = 処理前シート.UsedRange

    Dim 最終行 As Long
    Dim 開始行 As Long
    Dim r As Long
    Dim shp As Shape
Dim 幅  As Boolean
 幅 = Range("A1").ColumnWidth
    開始行 = 元データ(1, 1).Row
    最終行 = 元データ.Rows.Count + 開始行

    'レース名取得
    Dim レース名 As String
    For r = 開始行 To 最終行
        If 元データ(r, 2).Value <> "" Then
            レース名 = 元データ(r, 2).Offset(2, 0)
            Exit For
        End If
    Next r
        '距離

    Dim 距離 As String
    For r = 開始行 To 最終行
        If 元データ(r, 2).Value <> "" Then
            距離 = 元データ(r, 3).Offset(4, -1)
            Exit For
        End If
    Next r

    '馬情報開始行取得
    Dim 馬情報行 As Long
    For r = 開始行 To 最終行
        If 元データ(r, 6) <> "" Then
            馬情報行 = r + 2
            Exit For
        End If
    Next r

Dim 日付 As Variant
Dim variable1 As Variant
Dim variable2 As Variant
Dim c As Range
Dim 場 As Variant
Dim レース番号 As Variant
Set c = Range("A1:A200").Find("の払戻一覧", LookAt:=xlPart)
If Not c Is Nothing Then
日付 = Cells(c.Row + 5, c.Column).Value
場 = Cells(c.Row + 6, c.Column).Value
レース番号 = Cells(c.Row + 1, c.Column).Value
レース名 = Cells(c.Row + 2, c.Column).Value
End If

    'レース内容取得と書き出し
    Dim 馬名, 性齢毛色, 斤量, 調教師, 父馬名, 母馬名, 負担重量, 所属, 戦績, 収得賞金, 馬番

    Dim cnt As Long
    cnt = 1
    For r = 馬情報行 To 最終行
        If 元データ(r, 6) <> "" Then

            cnt = cnt + 1 'カウンタ
    If ActiveSheet.Cells(r, 1).Value Like "開催スケジュール" Then
'データ取得1
日付 = 処理前シート.Range("a2").Value

End If

            'データ取得
            馬番 = 元データ(r, 2).Value
            馬名 = 元データ(r, 4).Value
            調教師 = 元データ(r, 1).Value
            性齢毛色 = 元データ(r, 5).Value
            母馬名 = 元データ(r, 6).Value
            負担重量 = 元データ(r, 7).Value
            調教師 = 元データ(r, 8).Value
            戦績 = 元データ(r, 10).Value
            収得賞金 = 元データ(r, 9).Value
            父馬名 = 元データ(r, 12).Value
            '*******************************
            'この間はご自身で考えてコードを追加してください
            '*******************************

            'データ書き出し
            処理後シート.Cells(cnt, 1) = 日付
            処理後シート.Cells(cnt, 2) = 場
            処理後シート.Cells(cnt, 3) = レース番号
            処理後シート.Cells(cnt, 4) = レース名
            処理後シート.Cells(cnt, 5) = 馬番
            処理後シート.Cells(cnt, 6) = 馬名
            処理後シート.Cells(cnt, 8) = 性齢毛色
            処理後シート.Cells(cnt, 9) = 負担重量
            処理後シート.Cells(cnt, 10) = 調教師
            処理後シート.Cells(cnt, 11) = 収得賞金
            処理後シート.Cells(cnt, 12) = 母馬名

            '元データシート削除
            '*******************************
            'マクロの記録で記録されたコードを追加
            '*******************************

        End If
    Next r
Cells.UseStandardWidth = 幅
    Sheets("テスト").Select
    Sheets("テスト").Select
  Application.ScreenUpdating = True
 Application.DisplayAlerts = True
End Sub

Function Get開催コード生成(ByVal i As Integer) As String

    Dim Y As String   '年
    Dim D As String   '日付
    Dim c As String   '回
    Dim A As String   '場所
    Dim T As String   '日目
    Dim r As String   'レース番号

    With ThisWorkbook.ActiveSheet
        Y = Format(.Range("A2").Value, "0000")
        D = Format(.Range("B2").Value, "0000")
        A = Get場所コード(.Range("C2").Value)
        c = Format(.Range("D2").Value, "00")
        T = Format(.Range("E2").Value, "00")
        r = Format(.Range("F2").Value + i - 1, "00")
    End With

    Get開催コード生成 = Y & D & A & c & T & r
End Function
Function Get場所コード(ByVal 場所 As String) As String
    Dim s As String

    Select Case 場所
             Case "函館": s = "02"
        Case "新潟": s = "04"
        Case "東京": s = "05"
        Case "中山": s = "06"
        Case "中京": s = "07"
        Case "京都": s = "08"
    End Select

    Get場所コード = s
End Function

Sub Set出馬表取得(ByVal myURL As String)

    With ActiveSheet.QueryTables.Add(Connection:=myURL, _
        Destination:=Range("$A$15"))
        .Name = ""
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .BackgroundQuery = True
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .WebSelectionType = xlEntirePage
        .WebFormatting = xlWebFormattingNone
        .WebPreFormattedTextToColumns = True
        .WebConsecutiveDelimitersAsOne = True
        .WebSingleBlockTextImport = False
        .WebDisableDateRecognition = False
        .WebDisableRedirections = False
        .Refresh BackgroundQuery:=False
    End With
End Sub
です
よろしくおねがいします
(競馬すき) 2021/07/23(金) 19:45

回答ではありませんが、提示されたコードのネタ元は↓ですかね。
[[20190318201743]] 『同じブックの複数のシートに同じマクロを実行したい』(ブルー)
[[20190415195853]] 『webクエリで』(ブルー☆)

とりあえず、あなた自身はどこまでわかって(理解して)いるのですか?
(参考にするくらいだから、トピック内でのやり取りは読んでますよね?)

また、エクセルの質問であれば【行・列】を踏まえて、元のレイアウトと完成希望図を提示されるようにしたほうが、回答者側で状況が掴みやすくなり回答が付く可能性がアップすると思います。

(もこな2) 2021/07/24(土) 00:14


そうなんですね
私もこの2つについてしりませんでした
(競馬すき) 2021/07/24(土) 19:59

 >この間はご自身で考えてコードを追加してください

 偶然全く同じ文言が出てきますね。
 参考にしてない、というのなら、ご自分で考えた
 コードということですね。
 でしたら、ここまで書けるのにご自分でコードの改変
 が出来ないというのが解せません。
(通りすがり) 2021/07/24(土) 21:23

自分で考えましたすこし考えてみます

(競馬すき) 2021/07/25(日) 22:23


すいませんもうすこし考えさせてください
(相撲好き) 2021/08/03(火) 19:04

すいませんよくわかりませんでした
すいません助けてください
(相撲好き) 2021/08/04(水) 22:54

では、超偶然にも↓で議論されているのでそこから研究してみてはどうですか?
[[20190318201743]] 『同じブックの複数のシートに同じマクロを実行したい』(ブルー)
[[20190415195853]] 『webクエリで』(ブルー☆)

また、繰り返しですが、エクセルの質問であれば【行・列】を踏まえて、元のレイアウトと完成希望図を提示されるようにしてみてはどうですか?

(もこな2 ) 2021/08/05(木) 07:01


競馬すき=相撲好き?
(いみ) 2021/08/05(木) 07:39

わかりました
色々ありがとうございます
(競馬すき) 2021/08/05(木) 20:24

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.