やりたいこと
Yahooファイナンスさんのサイトから正規表現で株価を取得したいです。ExcelのVBAです。
発生している問題・エラーメッセージ
Set oHttp = CreateObject("MSXML2.ServerXMLHTTP")が上手くいかないのか
下記oHttp.Sendのところで「実行時エラー'-2147012867 サーバーに接続できませんでした」とでてきます。
どなたか解決方法をご存知の方がいらっしゃればご教示お願いできませんでしょうか。
よろしくお願いいたします。
###調べたこと・試したこと
ちなみに次の2つでも試してみましたが動きませんでした。
Set oHttp = CreateObject("Microsoft.XMLHTTP")
Set oHttp = CreateObject("MSXML.XMLHTTP")
該当のソースコード
VBA
1Const urlk1 As String = "https://info.finance.yahoo.co.jp/history/?code=4762.T" 2 3Sub 取得1() 4Dim oHttp As Object 5Dim dthtml As String 6Dim chktb As String 7Dim stchk1 As Long 8Dim stchk2 As Long 9Dim chksu As Long 10Dim j As Integer 11Dim hosei As Integer 12 13If msgd = "週間データ" Then 14 hosei = 0 15Else 16 hosei = 0 17End If 18 19**Set oHttp = CreateObject("MSXML2.ServerXMLHTTP")** 20 With CreateObject("VBScript.RegExp") 21 .Pattern = ">([^<>]+)<" 22 .Global = True 23 24 oHttp.Open "GET", urlk1, False 25 **oHttp.Send** 26 dthtml = oHttp.responsetext 27 28 On Error Resume Next 29 stchk1 = InStr(1, dthtml, "始値", 1) 30 stchk2 = InStrRev(Left(dthtml, stchk1), "table") 31 chksu = InStr(stchk2, dthtml, "</table", 1) 32 dthtml = Mid$(dthtml, stchk2, chksu - stchk2) 33 34 itmsu = .Execute(dthtml).Count 35 ReDim hdat(itmsu + 7) 36 37 With .Execute(dthtml) 38 For j = 1 To itmsu 39 hdat(j + hosei) = .Item(j).SubMatches(0) 40 Next j 41 End With 42 End With 43 Set oHttp = Nothing 44 DoEvents 45End Sub
コードは https://teratail.com/help#about-markdown の[コードを入力]を使ってください。参考にしたURLがあれば、 https://teratail.com/help#about-markdown の[リンク]で載せると解決が早いです。
これ、oHttp.Open "GET", urlk1, Falseの所でURLになるべき「urlk1」には値が入った状態でこのプロシージャに入ってくるんでしょうか?
Orlofskyさん すみません初めての投稿で。次回より気をつけます。
ukkari-ukachanさん 申し訳ございません。コードが間違っておりました。修正しました。
ここの掲示板は質問などを修正する機能が提供されています。字下げもしていないコードをきちんと読んでアドバイスをしてくれる奇特な人は少ないです。
使用環境 Excelのバージョン も記載していただけないでしょうか。こちらのExcel2016では正常に動きます。
ありがとうございます。Excel2016では正常に動くのですね。 こちらの環境はWindows7(64ビット) Excel for Office 365 MSO32ビットです。