エクセルで株価を自動取得するVBAコードを紹介します。(日本株・米国株・投信対応版)

スポンサーサイト



Excel

32 Comments

mochi

mochi  

To 鍵コメさん

ご連絡ありがとうございます。
ひとまず動作するようになって良かったです。

> 今日の夕方に出たエラーメッセージは
> http.sendの部分でサーバに接続できないエラーでした。
> サンプルシートでも試しましたが、同じエラーメッセージが出ていました。
> しかし、現在、なぜか解消されています。

サーバーが混み合っているなどの理由で応答が得られずにタイムアップしていたのかもしれません。
今度同じような症状が出た場合は、少し時間を置いてから再実行するようにしてみてください。

2019/09/05 (Thu) 23:19 |  REPLY |   

-  

管理人のみ閲覧できます

このコメントは管理人のみ閲覧できます

2019/09/05 (Thu) 21:48 |  REPLY |   
mochi

mochi  

To 鍵コメさん

鍵コメントである必要はないと判断いたしましたので、内容をそのまま引用させていただきます。

> 株価のダウンロードに使っていましたが今日、9月5日の午後4時頃から株価を取り込めなくなり、VBCでエラーがでるようになりました。

当方で動作確認(9月5日 21:05頃)したところ、記事中でダウンロードできるサンプルシートでは問題なく動作いたしました。
エラーが出る銘柄コードとエラー内容をご連絡ください。

2019/09/05 (Thu) 21:21 |  REPLY |   

-  

管理人のみ閲覧できます

このコメントは管理人のみ閲覧できます

2019/09/05 (Thu) 19:17 |  REPLY |   
mochi

mochi  

To 黒猫たま さん

こんばんは。黒猫たまさん。

無事に動作したようで良かったです。
FC2無料ブログではエクセルファイルの拡張子のままだとアップロードできないので、拡張子をrdfに書き換えることで無理矢理アップロードしています。ダウンロード後に拡張子をrdf→xlsmにすることでエクセルファイルとしてWindowsに認識されるようになります。
また障害発生した時はご連絡いただけると助かります。

2019/08/22 (Thu) 22:03 |  REPLY |   

黒猫たま  

To mochiさん

展開されたVBAのエラーは当方のミスでした、申し訳ありません。ダウンロードファイルは、拡張子がrdfでしたが、xlsmに変更して動作確認できました。

このたびはご対応ありがとうございました。今後ともよろしくお願いいたします。

2019/08/22 (Thu) 18:27 |  REPLY |   
mochi

mochi  

To 黒猫たまさん

こんばんわ。黒猫たまさん。

> 先ほど、ダウンロード釦をクリックしましたが無反応でした。
 すみません。HTMLコードがミスっててダウンロードできないようになっていました。
 修正してダウンロードできることを確認しました。

> また、展開されたVBAをコピペしたところ、81行目で「実行時エラー'5' プロシジャーの呼び出し、または引数が不正です。」 となってしまいます。
 記事中のVBAコードの方はコピペで問題なく動作しました。

2019/08/21 (Wed) 23:12 |  REPLY |   

黒猫たま  

To mochiさん

お世話になっております、早速の対応ありがとうございます。

先ほど、ダウンロード釦をクリックしましたが無反応でした。また、展開されたVBAをコピペしたところ、81行目で「実行時エラー'5' プロシジャーの呼び出し、または引数が不正です。」 となってしまいます。

重ね重ねのお願いになりますが、ご確認のほどお願い申し上げます。

2019/08/21 (Wed) 22:45 |  REPLY |   
mochi

mochi  

To 黒猫たまさん&sekonyanさん

株価取得VBAの障害連絡ありがとうございます。

ヤフーファイナンスの投信情報URLが変更になったことでアクセス出来なくなっておりました。
またそれに伴いデータフォーマットも変更されていました。

先程、記事中VBAコードならびにダウンロードファイルを修正しておきました。ご確認ください。

2019/08/21 (Wed) 13:42 |  REPLY |   

sekonyan  

エラー

今日から 実行時エラー:2147024891(80070005) デバッグが http.Send
の部分が該当されている模様です。


2019/08/21 (Wed) 09:01 |  REPLY |   

黒猫たま  

55行目 http.sendでエラー

いつもお世話になっております。

株価取得Excelにて、表題のエラーが発生します。
本日8月20日にYahoo!ファイナンスのページを刷新した模様です。

6月末に続いて再度のお願いになりますが、ご確認いただければ幸いです。

2019/08/20 (Tue) 23:57 |  REPLY |   
mochi

mochi  

Re: 米国株式 株価取得でエラーの件

こんにちは。黒猫たまさん。

> VBA修正ありがとうございました。
> 動作確認完了しました。

ひとまずエラー解消されたようで良かったです。
最近になって米国ヤフーファイナンスの内部構成が比較的頻繁に変更されるようなので、再びエラーが発生する時がやってくるかもしれませんが、その際はまた今回のようにご一報いただけると助かります。

2019/07/02 (Tue) 21:15 |  REPLY |   

黒猫たま  

米国株式 株価取得でエラーの件

いつもお世話になっております。

VBA修正ありがとうございました。
動作確認完了しました。

2019/07/02 (Tue) 17:34 |  REPLY |   
mochi

mochi  

Re: 米国株式 株価取得でエラー

こんにちは。黒猫たまさん。

>米国株式価格取得EXCELにて、112行目で「実行時エラー13 型が一致しません」のエラーが出ます。

取り急ぎ対策方法を回答いたします。
記事中VBAコードを先ほど修正しておきました。
100行目 check_txt = "data-reactid=""44"">"の部分を44→42に変更してください。

2019/06/29 (Sat) 20:46 |  REPLY |   

黒猫たま  

米国株式 株価取得でエラー

いつもお世話になっております。

米国株式価格取得EXCELにて、112行目で「実行時エラー13 型が一致しません」のエラーが出ます。

お時間があるようでしたら確認していただければ幸いです。

2019/06/29 (Sat) 19:48 | EDIT |  REPLY |   
mochi

mochi  

Re: 発行済株式数

はじめまして。KABUKABUさん。

> 発行済株式数の情報も取得することはできるのでしょうか!?

 具体的にどのように取得するかは別にして技術的には可能だと思いますよ。
 頑張って挑戦してみてください。

2019/06/15 (Sat) 14:55 |  REPLY |   

KABUKABU  

発行済株式数

こんにちは!
発行済株式数の情報も取得することはできるのでしょうか!?

こちら神サイトはとても参考にさせていただいてます!
今後も楽しみに拝見させて頂きます!

2019/06/14 (Fri) 20:46 |  REPLY |   
mochi

mochi  

Re: 外国株取得でエラー

こんにちは。とらさん。

> 数日前から外国株取得でエラーが出るようになりました。

 障害内容確認しました。
 記事中VBAコードを先ほど修正しておきました。
 100行目 check_txt = "data-reactid=""41"">"の部分を41→44に変更してください。

2019/05/28 (Tue) 01:04 |  REPLY |   

とら  

外国株取得でエラー

公開していただいてるエクセルを利用しています。
大変使いやすくて重宝させていただいています。(毎日押してしまう…)

数日前から外国株取得でエラーが出るようになりました。
お手すきのときにでもみてみていただけるとうれしいです。
今後とも応援しております。

2019/05/27 (Mon) 20:41 | EDIT |  REPLY |   
mochi

mochi  

Re: エクセルのエラー

取り急ぎ回答します。

92行目 check_txt = "data-reactid=""35"">"の35→34に変更してください。

2019/03/02 (Sat) 13:09 |  REPLY |   

rui  

エクセルのエラー

いつも公開していただいているエクセルを使っています。
とても使いやすく、大変感謝しております。
2月25日から、アメリカ株の株価取得の際にエラーが発生するようになりましたので修正をしていただければ幸いです。

2019/02/26 (Tue) 11:19 |  REPLY |   
mochi

mochi  

Re: To mochiさん

こんにちは。hiroさん。

> ご推察のとおりでした。正常に取得できていることを確認しました。

解決できたようでなりよりです。

2018/10/14 (Sun) 16:29 |  REPLY |   
mochi

mochi  

Re: 汚いコードですが…

こんにちは。あれあれさん。

参考にさせていただきます。

2018/10/14 (Sun) 16:28 |  REPLY |   

hiro  

To mochiさん

ご推察のとおりでした。正常に取得できていることを確認しました。

2018/10/13 (Sat) 20:42 |  REPLY |   

あれあれ  

汚いコードですが…

他言語や Yahoo JAPAN以外のサイトでは 問題ないようですね
mochiさんの暫定策を元に 書いてみました

' ---- 20170331 頻繁アクセス対策 end --------

' ヤフーファイナンスをHTML形式で読み込む
Set http = CreateObject("MSXML2.ServerXMLHTTP")
http.Open "GET", url, False
http.setRequestHeader "If-Modified-Since", "Thu, 01 Jun 1970 00:00:00 GMT"
http.setTimeouts 5000, 5000, 5000, 5000
On Error Resume Next
http.Send
If (Err.Number <> 0) Then Set http = CreateObject("MSXML2.XMLHTTP"): http.Open "GET", url, False: http.setRequestHeadhttp.setRequestHeader "If-Modified-Since", "Thu, 01 Jun 1970 00:00:00 GMT": http.Send

If (http.Status <> 200) Then
GoTo Exit_out
End If
On Error GoTo 0

Err.Clear

If Len(http.responseText) < 10 Then
GoTo Exit_out
End If

2018/10/13 (Sat) 20:22 |  REPLY |   
mochi

mochi  

WSHの事は分かりませんが…

こんにちは。hiroさん。

> msgbox http.responseText

MsgboxはVBAだと1024文字しか表示することができません。
おそらくWSHのMsgboxにも同様の文字数上限があるのではないかと思います。
当方ではデバックや解析の際にはresponseTextをファイル出力して確認するようにしています。

2018/10/13 (Sat) 20:07 |  REPLY |   

hiro  

To mochiさん

当方ではWSHでやっていますが、記事を参考にして以下のようなコードで取得を試みました。

url = "https://stocks.finance.yahoo.co.jp/stocks/detail/?code=8001.T"
Set http = CreateObject("MSXML2.XMLHTTP")
http.Open "GET", url, False
http.setRequestHeader "If-Modified-Since", "Thu, 01 Jun 1970 00:00:00 GMT"
http.Send
msgbox http.responseText

その結果、何がしかのテキストデータの取得はできるようになりましたが、"stoksPrice"">" に続くデータなど、必要な文字列が含まれていません。WSHとVBAの違いが原因なんでしょうか。

2018/10/13 (Sat) 19:39 |  REPLY |   

とらりん  

No title

対応策ご教示ありがとうございます。再び動くようになりました。

2018/10/10 (Wed) 23:15 |  REPLY |   
mochi

mochi  

Re: No title

こんにちは。momoさん。

> とらりんさんと同じく同様のエラーが発生しました。丁度きのう、東証アローヘッドの問題が起きたことも関係あるのでしょうか。

 タイミング的には関係してそうに見えなくもありませんが、技術的にはヤフーファイナンスにアクセスしているだけなので関係ないとは思っているんですけどねぇ。
 ヤフーファイナンス自体、このVBAのようなwebスクレイピングは禁止してしてますんで、本気で何らかの対策を行ってきた可能性も否定できません。

> 上記の対処、参考にさせていただきます。有り難うございます。

 しばらく様子を見て元のVBAでアクセスできない状態が続くようでしたら、米国株との併用を考慮した上で、記事内容の変更フォローしようと思います。

2018/10/10 (Wed) 22:09 |  REPLY |   

momo  

No title

とらりんさんと同じく同様のエラーが発生しました。丁度きのう、東証アローヘッドの問題が起きたことも関係あるのでしょうか。

上記の対処、参考にさせていただきます。有り難うございます。



2018/10/10 (Wed) 15:14 |  REPLY |   
mochi

mochi  

Re: http.sendでエラー

こんにちは。とらりんさん。

> 今日から?http.sendの部分でサーバに接続できないエラーが出るようになってしまいました。
> とりいそぎご報告。

 ヤフーファイナンス側で何かしたみたいです。
 日本株もしくは投信だけであれば、下記変更で暫定的に対処できました。

1.20行目のAPIを変更
 Set http = CreateObject("MSXML2.ServerXMLHTTP")
  ↓
 Set http = CreateObject("MSXML2.XMLHTTP")

2.60行目のタイムアウト設定行を削除
 http.setTimeouts 5000, 5000, 5000, 5000 ←この行を削除

3.エクセルシートをダウンロードして利用している場合
http.Sendの下に続く以下の3行を全て削除

If (http.Status <> 200) Then
GoTo Exit_out
End If

 これが一時的なものなのか?恒久的なものなのかはわかりませんので、しばらく様子を見ることにします。
 米国株は元のプログラムでも取得できる(上の変更を行うと米国株は取得できなくなる)ので、シート内に米国株も含んでいる場合は、ひとまず「日本株と投信」「米国株」でシートもしくはファイルを分けて運用してください。

 とりいそぎ回答です。

2018/10/10 (Wed) 01:10 |  REPLY |   

とらりん  

http.sendでエラー

今日から?http.sendの部分でサーバに接続できないエラーが出るようになってしまいました。
とりいそぎご報告。

2018/10/09 (Tue) 23:48 |  REPLY |   

Post a comment

1 Trackbacks

Click to send a trackback(FC2 User)
この記事へのトラックバック
  •  VBAで「PER取得マクロ」を作成しました
  • 株価指標のPERをYahoo!ファイナンスから取得し、Excelシートにコピーするマクロを作成しました。ソースを公開します。 1. 動作と仕組み 1-1. 動作 マクロを実行すれば、下図のように、エクセルシートにPER等の情報が一覧で取得できます。 ※クリックで拡大します。 1-2. 仕組み Yahoo!ファイナンスのページから、データを取得します。 順...
  • 2013.10.24 (Thu) 01:12 | Kapok の資産運用