こんにちわ、以前もここで質問させていただいたのですが、未完成なので再度質問させてください。
以前と違い、初日の部分を表を作りそこからとれるようにしました。
一、開催場所別にシートを分けているので、それぞれ会場のシートに12レース分表示したい(A1セル1レース目、E1セル2レース目...と順に横にずれてほしいです)。
一、開催場所でレースがない場合は、webサイト自体ない(エラーが起きる)のでwebサイトがないエラーが起きた時には、A1セルに本日のレースはありませんと表示したい
一、レース番号は引数取得ではなくループ処理にしたいのですが、For Lng_レース = 1 To 12これをどこに入れればいいか、わかりません。
--------------------------------------------------------------
以前、GooUserラックさんに作っていただいたVBAを自分なりに、模索しながらいじってみたのですが、どうしてもできませんでした。
Sub データ抽出(Day_日付 As Date, Lng_場 As Long, Lng_レース As Long)
Dim Str_アドレス As String
Dim Day_初日 As Date
Day_初日 = Day_日付 - Weekday(Day_日付, vbTuesday) + 1
Str_アドレス = "FINDER;http://app.boatrace.jp/race/01_" & Format(Day_初日, "yyyymmdd")
Str_アドレス = Str_アドレス & ".php?day=" & Format(Day_日付, "yyyymmdd")
Str_アドレス = Str_アドレス & "&jyo=" & Format(Lng_場, "00")
Str_アドレス = Str_アドレス & "&rno=" & Format(Lng_レース, "00") & "&type=program"
Sheets("作業").Select
Cells.Delete Shift:=xlUp
With ActiveSheet.QueryTables.Add(Connection:=Str_アドレス, Destination:=Range("A1"))
.Name = "Data"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = False
.RefreshOnFileOpen = False
.BackgroundQuery = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.WebSelectionType = xlEntirePage
.WebFormatting = xlWebFormattingAll
.WebPreFormattedTextToColumns = True
.WebConsecutiveDelimitersAsOne = True
.WebSingleBlockTextImport = False
.WebDisableDateRecognition = False
.WebDisableRedirections = False
.Refresh BackgroundQuery:=False
End With
End Sub
--------------------------------------------------------------
を自分なりにアレンジしたデータ
--------------------------------------------------------------
Sub 桐生(Day_日付 As Date, Lng_場 As Long, Lng_初日 As Long)
Dim Str_アドレス As String
For Lng_レース = 1 To 12
Str_アドレス = "FINDER;http://app.boatrace.jp/race/" & Format(Lng_レース, "00")
Str_アドレス = Str_アドレス & "_" & Format(Lng_初日, "yyyymmdd")
Str_アドレス = Str_アドレス & ".php?day=" & Format(Day_日付, "yyyymmdd")
Str_アドレス = Str_アドレス & "&jyo=" & Format(Lng_場, "00")
Str_アドレス = Str_アドレス & "&rno=" & Format(Lng_レース, "00") & "&type=program"
Sheets("桐生").Select
Cells.Delete Shift:=xlUp
With ActiveSheet.QueryTables.Add(Connection:=Str_アドレス, Destination:=Range("A1"))
.Name = "Data"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = False
.RefreshOnFileOpen = False
.BackgroundQuery = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.WebSelectionType = xlEntirePage
.WebFormatting = xlWebFormattingAll
.WebPreFormattedTextToColumns = True
.WebConsecutiveDelimitersAsOne = True
.WebSingleBlockTextImport = False
.WebDisableDateRecognition = False
.WebDisableRedirections = False
.Refresh BackgroundQuery:=False
End With
Next
End Sub
回答よろしくお願いいたします。
No.4ベストアンサー
- 回答日時:
呼び出し方はあっています。
URLにもう一か所レース場のコードを入れないといけなかったようです。
こちらに差し換えて下さい
----------------------------------------------------------------------------
Sub データ抽出(Day_初日 As Date, Day_日付 As Date, Lng_場 As Long)
Dim Obj_IE As Object
Dim Str_ソース As String
Dim Str_アドレス As String
Dim Lng_レース As Long
Lng_レース = 1
Str_アドレス = "http://app.boatrace.jp/race/" & Format(Lng_場, "00")
Str_アドレス = Str_アドレス & "_" & Format(Day_初日, "yyyymmdd")
Str_アドレス = Str_アドレス & ".php?day=" & Format(Day_日付, "yyyymmdd")
Str_アドレス = Str_アドレス & "&jyo=" & Format(Lng_場, "00")
Str_アドレス = Str_アドレス & "&rno=" & Format(Lng_レース, "00") & "&type=program"
Set Obj_IE = CreateObject("InternetExplorer.Application")
With Obj_IE
.Navigate Str_アドレス
Do While .Busy = True
DoEvents
Loop
Do While .Document.ReadyState <> "complete"
DoEvents
Loop
Str_ソース = .Document.Body.InnerText
.Quit
End With
Set Obj_IE = Nothing
If InStr(Str_ソース, "このページは表示できません") <> 0 Then
MsgBox ("アドレス違い")
Exit Sub
End If
If InStr(Str_ソース, "データが見つかりません") <> 0 Then
MsgBox ("データが見つかりません")
Exit Sub
End If
If Len(Str_ソース) < 1500 Then
MsgBox ("データが有りません")
Exit Sub
End If
Sheets("作業").Select
Cells.Delete Shift:=xlUp
For Lng_レース = 1 To 12
Str_アドレス = "http://app.boatrace.jp/race/" & Format(Lng_場, "00")
Str_アドレス = Str_アドレス & "_" & Format(Day_初日, "yyyymmdd")
Str_アドレス = Str_アドレス & ".php?day=" & Format(Day_日付, "yyyymmdd")
Str_アドレス = Str_アドレス & "&jyo=" & Format(Lng_場, "00")
Str_アドレス = Str_アドレス & "&rno=" & Format(Lng_レース, "00") & "&type=program"
Str_アドレス = "FINDER;" & Str_アドレス
With ActiveSheet.QueryTables.Add(Connection:=Str_アドレス, Destination:=Cells(1, Lng_レース * 5 - 4))
.Name = "Data"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = False
.RefreshOnFileOpen = False
.BackgroundQuery = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.WebSelectionType = xlEntirePage
.WebFormatting = xlWebFormattingAll
.WebPreFormattedTextToColumns = True
.WebConsecutiveDelimitersAsOne = True
.WebSingleBlockTextImport = False
.WebDisableDateRecognition = False
.WebDisableRedirections = False
.Refresh BackgroundQuery:=False
End With
Next
MsgBox ("終了しました")
End Sub
No.3
- 回答日時:
図は良く見えないので、一例として
----------------------------------------------------------------------------
Sub 桐生()
Call データ抽出(#5/24/2016#, #5/29/2016#, 1)
End Sub
----------------------------------------------------------------------------
Sub データ抽出(Day_初日 As Date, Day_日付 As Date, Lng_場 As Long)
Dim Obj_IE As Object
Dim Str_ソース As String
Dim Str_アドレス As String
Dim Lng_レース As Long
Lng_レース = 1
Str_アドレス = "http://app.boatrace.jp/race/01_" & Format(Day_初日, "yyyymmdd")
Str_アドレス = Str_アドレス & ".php?day=" & Format(Day_日付, "yyyymmdd")
Str_アドレス = Str_アドレス & "&jyo=" & Format(Lng_場, "00")
Str_アドレス = Str_アドレス & "&rno=" & Format(Lng_レース, "00") & "&type=program"
Set Obj_IE = CreateObject("InternetExplorer.Application")
With Obj_IE
.Navigate Str_アドレス
Do While .Busy = True
DoEvents
Loop
Do While .Document.ReadyState <> "complete"
DoEvents
Loop
Str_ソース = .Document.Body.InnerText
.Quit
End With
Set Obj_IE = Nothing
If InStr(Str_ソース, "このページは表示できません") <> 0 Then
MsgBox ("アドレス違い")
Exit Sub
End If
If InStr(Str_ソース, "データが見つかりません") <> 0 Then
MsgBox ("データが見つかりません")
Exit Sub
End If
If Len(Str_ソース) < 1500 Then
MsgBox ("データが有りません")
Exit Sub
End If
Sheets("作業").Select
Cells.Delete Shift:=xlUp
For Lng_レース = 1 To 12
Str_アドレス = "http://app.boatrace.jp/race/01_" & Format(Day_初日, "yyyymmdd")
Str_アドレス = Str_アドレス & ".php?day=" & Format(Day_日付, "yyyymmdd")
Str_アドレス = Str_アドレス & "&jyo=" & Format(Lng_場, "00")
Str_アドレス = Str_アドレス & "&rno=" & Format(Lng_レース, "00") & "&type=program"
Str_アドレス = "FINDER;" & Str_アドレス
With ActiveSheet.QueryTables.Add(Connection:=Str_アドレス, Destination:=Cells(1, Lng_レース * 5 - 4))
.Name = "Data"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = False
.RefreshOnFileOpen = False
.BackgroundQuery = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.WebSelectionType = xlEntirePage
.WebFormatting = xlWebFormattingAll
.WebPreFormattedTextToColumns = True
.WebConsecutiveDelimitersAsOne = True
.WebSingleBlockTextImport = False
.WebDisableDateRecognition = False
.WebDisableRedirections = False
.Refresh BackgroundQuery:=False
End With
Next
MsgBox ("終了しました")
End Sub
----------------------------------------------------------------------------
桐生は本日ないので、戸田で試してみたのですが、アドレス違いと出てくるのは何ででしょうか?
画像を更新したので見ていただけるとありがたいのですが、
Callで呼ぶ際に初日をC3セルから、日付をA3セルから、レース場所をB3セルから呼ぶようにしたいので
Call データ抽出(Range("C3").Value, Range("A3").Value, Range("B3").Value)
こうしたのですがあってますか?
画像見にくかったらもう一度上げます。
No.2
- 回答日時:
開催日が4日間のものも有るんですか?
火曜日~日曜日開催として作ってしまっています。
①初日は必ず火曜日という訳ではないのですね?
②何か決まりがあるのでしょうか?
特に決まりが無いのならば、初日も入力しないとダメです。
はい、4日間しかないものもあったり、5、6日あったり、バラバラなのです。
なので1号艇という文字より上を削除などと指定できるのならばうれしいのですが、もし不可能ならあとで自分で調整してみますので、すべてのデータでも構いません。
>①初日は必ず火曜日という訳ではないのですね?
そうなんです,,,初日は本当に法則がなくバラバラなのです。
なので、
http://app.boatrace.jp/race/monthly/?day=20160603
このサイトの表をダウンロードして、画像でもわかる通りC列に初日を表示するようにしました!
なので(Day_日付 As Date, Lng_場 As Long, Lng_初日 As Long)のLng_初日 As Longを足せばいいかなと思ったのですが、うまくできませんでした。
No.1
- 回答日時:
前回はとりあえず、インターネット上のデータをシートに張り付けるだけでした。
私は競艇をやらないので、この中でどのデータが欲しいのかが判りません。
1レースあたり4列のデータが張り付いています。1列くらいあけて次のレースを並べれば良いのでしょうか?
また「1号艇」より上は不要だと思いますし、「表の見方について」以下も不要だと思いますので削除してしまった方が良いのでしょうか?
ご回答ありがとうございます、いつもお世話になってます。
>1レースあたり4列のデータが張り付いています。1列くらいあけて次のレースを並べれば良いのでしょうか?
はい!1列あけていただいたら助かります!
>また「1号艇」より上は不要だと思いますし、「表の見方について」以下も不要だと思いますので削除してしまった方が良いのでしょうか?
不要です!
しかしここについてなのですが、1号艇より上は初日~最終日が全部で5日間のもあれば、4日間のもあり、その場合、行が変わってしまうのですが、「1号艇より上」を削除などと指定することは可能なのでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 2つのVBAを一緒にしたら機能しなくなりました(エクセル) 7 2022/06/02 12:41
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Excel(エクセル) VBAについて 3 2022/06/19 18:19
- Visual Basic(VBA) Excel VBA キーワードから列を取得して、さらに空欄行を非表示にする 3 2022/10/21 22:49
- Excel(エクセル) エクセルVBA、ファイル名をセルの値で保存の方法を教えてください。 おそれいります。こちらで数々のエ 6 2023/06/30 22:17
- Excel(エクセル) エクセル2019でPDFファイル名に枝番号をつけたい。 アクティブワークシートを印刷した後の処理とし 4 2023/06/06 21:00
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- Excel(エクセル) このコードに追記事項の仕方を教えて下さい。 以下のコード内容に出てくる。セルH3が空白の場合、エラー 4 2023/08/03 00:22
- Visual Basic(VBA) Excel vbaについての質問 3 2023/04/18 16:14
- Visual Basic(VBA) 動きっぱなしです。止め方とプロシージャの間違いを教えて下さい! 5 2022/08/15 23:08
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
どうしたらアドレスを青色で表...
-
@live.jpというメールアドレス...
-
複数アドレスにメール送信した...
-
アドレスの語尾 .com .co.jp ...
-
電話番号とメルアド、どっちが...
-
空メールが送信されてくるのは?
-
hotmailから携帯への送信
-
フリーメールアドレスから、身...
-
メールアドレスがばれても悪用...
-
MACアドレスをサイトにのせても...
-
@**dion.ne.jp は携帯アドレス...
-
出していないメールが宛先不明...
-
身に覚えのないエロ系メールが...
-
ヤフーメールの迷惑メールに困...
-
iPhoneのことなんですが。 親と...
-
最近、嫌がらせで勝手に出会い...
-
 ̄のアドレス入力方法教えて下さい
-
メール送信エラー。宛先アドレ...
-
アウトルックで受信メールが連...
-
yahooのIDがバレると
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
どうしたらアドレスを青色で表...
-
複数アドレスにメール送信した...
-
@live.jpというメールアドレス...
-
アドレスの語尾 .com .co.jp ...
-
空メールが送信されてくるのは?
-
@**dion.ne.jp は携帯アドレス...
-
hotmailから携帯への送信
-
スイッチングハブのMACアドレス...
-
メール送信エラー。宛先アドレ...
-
署名の中に自分のアドレスを書...
-
電話番号とメルアド、どっちが...
-
メールがエラーで戻ってきまし...
-
Yahooメールアドレスを変更した...
-
メールアドレスがばれても悪用...
-
ヤフーメールの迷惑メールに困...
-
@gol.comというメールアドレス...
-
件名と本文なしのメールが多い...
-
 ̄のアドレス入力方法教えて下さい
-
メールがはねかえされて送れな...
-
ybbメールとyahoo.co.jpメール...
おすすめ情報
画像再