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

障害情報 2018/5/13

ヤフーファイナンスの仕様変更に伴い、2018/5/12以前に記載されていたVBAコードならびにダウンロードしたエクセルファイルでは米国株式ならびに米国ETFのデータ取得が出来なくなっております。

VBAコードの81~97行目のデータ取得の内容をフォローするか、エクセルファイル(V3.07)の再ダウンロードをしていただけるようお願いします。

株価や投信の基準価額を自動取得できます。

僕は日本株の個別銘柄を、富士宮応援ファンドで15銘柄、好配当目的で41銘柄、合わせて56銘柄を保有しております。いずれも単元未満株ですが…

証券会社の一覧だと少々見づらいので、自分用にカテゴリー毎に分けてエクセルシートで管理しています。
ボタンをクリックすると、ヤフーファイナンス(日本株・投信)またはグーグルファイナンス(米国株)から、最新の株価基準価額を自動取得できるようになっています。

以前紹介していたVBAコードは、取得できるのは東証上場の株式・ETFの株価だけで、動作時間も1銘柄あたり数秒かかっておりました。

今回紹介するものは、米国上場している株式・ETFの株価や、国内投資信託の基準価額も自動取得することができ、また動作時間も1銘柄あたり1~1.5秒程度に短縮されています。

Image20160120.jpg

VBAコードの内容としては、上のサンプルシートに記載してある銘柄コードを元に、ヤフーファイナンスまたはグーグルファイナンスのHTMLソースを読み込んで、株価情報を取得しています。

バージョンアップ履歴

2018/5/13 Verup!

ヤフーファイナンスのデータフォーマット仕様変更により株価データが取得できなくなったのを解消。

2018/3/22 Verup!

グーグルファイナンスの仕様変更により米国株情報の取得が困難になったため、再び米ヤフーファイナンスから取得できるように変更。(米ヤフーファイナンスのリダイレクトエラーが解消されていたので…)
株価指数の指定はNYダウ(^DJI)やS&P500指数(^GSPC)などで対応可能。
またJPY=Xでドル円レートが取得可能になった。

2017/12/21 Verup!

2017/12/21時点でリダイレクトにて動作できているが正規URLに変更。
ヤフーファイナンスのURLをHTTP⇒HTTPSに変更。
グーグルファイナンスのURLをhttp://www⇒https://financeに変更。

2017/10/08 Verup!

投資信託の基準価額が前日比0(表示上="---")の時にエラーになるのを解消。

2017/05/06 Verup!

米ヤフーファイナンスへアクセスしようとするとリダイレクトエラーが出てしまい、XMLHTTPバージョンやURLをいろいろ変えて試したが解消されなかったため、米国株式はグーグルファイナンスから取得するようにしました。
またこの変更に伴い、NYダウ(.DJI)やS&P500指数(.INX)などにも対応できるようになっています。

2017/03/31 Verup!

ヤフーファイナンスへの頻繁アクセスによるアクセス拒否を防止する目的でデータ取得間隔として0.5秒間のタイマーを設けてみました。

2016/07/10 Verup!

国内株式の地方証券取引所(札証・名証・福証)の対応をしました。
地方証券取引所の銘柄の場合は、銘柄コード末尾に下記2文字を付け足してください。

  • 名古屋証券取引所(セントレックス含む):.N
  • 札幌証券取引所(アンビシャス含む):.S
  • 福岡証券取引所(Q-Board含む):.F

(例)名証の【1413】桧家ホールディングスなら 1413.N

VBAコードです。

Sub ボタン1_Click()
    Dim url As String
    Dim code As String
    Dim sosa_sh As Worksheet
    Dim check_row, code_column As Integer
    Dim now_price_column, old_price_column As Integer
    Dim org_color As Integer
    Dim http As Object
    Dim check_txt, get_txt As String
    Dim st_point, ed_point As Long
    Dim price_txt, old_price_txt, tmp_txt As String
    Dim t As Single ' 頻繁アクセス対策 20170331追加

    Set sosa_sh = ActiveSheet       '   現在のシートを退避
    check_row = 8                   '   8行目から株価取得開始
    code_column = 4                 '   識別コードの列
    now_price_column = 5            '   現在株価/基準価額の列
    old_price_column = 6            '   前日株価/基準価額の列

    Set http = CreateObject("MSXML2.ServerXMLHTTP")

    ' コード記載がなくなるまで繰り返す
    Do While sosa_sh.Cells(check_row, code_column) <> ""
            ' コード取得してURL設定
        code = sosa_sh.Cells(check_row, code_column)
        org_color = sosa_sh.Cells(check_row, now_price_column).Interior.ColorIndex  ' セルの色番号を一時退避
        sosa_sh.Cells(check_row, now_price_column).Interior.ColorIndex = 6          ' セルを黄色に塗る

        If Len(code) <> 8 Then 'コードが8桁以外の時(日本株式の時)
            If IsNumeric(Left(code, 4)) Then ' コード左4桁が数値の時
                If IsNumeric(code) Then ' コードが数値の時
                    url = "https://stocks.finance.yahoo.co.jp/stocks/detail/?code=" & code & ".T"
                    ' ヤフーファイナンスの株価情報を東証コードをつけて読み込み開始
                    ' http⇒httpsアドレス対応 20171221変更
                Else  ' コードに市場コードが付与されている時
                    url = "https://stocks.finance.yahoo.co.jp/stocks/detail/?code=" & code
                        ' ヤフーファイナンスの株価情報を読み込み開始
                        ' http⇒httpsアドレス対応 20171221変更
                End If
            Else ' コードが数値でない時(米国株式の時)
                url = "https://finance.yahoo.com/quote/" & code
        ' ↑ ヤフーファイナンスからの取得するように変更 20180322変更
            End If
        Else 'コードが8桁の時(投資信託の時)
            url = "https://stocks.finance.yahoo.co.jp/stocks/detail/?code=" & code
                ' ヤフーファイナンスの投信情報を読み込み開始
                ' http⇒httpsアドレス対応 20171221変更
        End If

        ' ---- 20170331 頻繁アクセス対策 start --------
        t = Timer()
        While Timer() < t + 0.5    ' 0.5秒間待機する
            DoEvents
        Wend
        ' ---- 20170331 頻繁アクセス対策 end --------

        ' ヤフーファイナンスをHTML形式で読み込む
        http.Open "GET", url, False
        http.setRequestHeader "If-Modified-Since", "Thu, 01 Jun 1970 00:00:00 GMT"
        http.setTimeouts 5000, 5000, 5000, 5000
        http.Send

        If Len(code) <> 8 Then 'コードが8桁以外の時(株式の時)
            If IsNumeric(Left(code, 4)) Then ' コード左4桁が数値の時
                ' 目印の"stoksPrice"">"の位置から現在株価を取得
                check_txt = "stoksPrice"">"
                st_point = InStr(1, http.responseText, check_txt) + Len(check_txt)
                ed_point = InStr(st_point, http.responseText, "</td>")
                price_txt = Mid(http.responseText, st_point, ed_point - st_point)

                ' 目印の"innerDate"と"前日終値"の位置から前日株価を取得
                st_point = InStr(1, http.responseText, "innerDate")
                ed_point = InStr(st_point, http.responseText, "前日終値")
                tmp_txt = Mid(http.responseText, st_point, ed_point - st_point)

                check_txt = "<strong>"
                st_point = InStr(1, tmp_txt, check_txt) + Len(check_txt)
                ed_point = InStr(st_point, tmp_txt, "</")
                old_price_txt = Mid(tmp_txt, st_point, ed_point - st_point)
            Else ' コードが数値でない時(米国株式の時)
                '---- ヤフーファイナンスフォーマット変更対応 20180513変更start ----
                ' 目印のCurrency in USDの位置から現在株価を取得
                check_txt = "Currency in USD"
                st_point = InStr(1, http.responseText, check_txt) + Len(check_txt)
                check_txt = "data-reactid=""35"">"
                st_point = InStr(st_point, http.responseText, check_txt) + Len(check_txt)
                ed_point = InStr(st_point, http.responseText, "</span>")
                price_txt = Mid(http.responseText, st_point, ed_point - st_point)
                
                ' 目印のPrevious Closeの位置から前日株価を取得
                check_txt = "Previous Close"
                st_point = InStr(1, http.responseText, check_txt) + Len(check_txt)
                check_txt = "data-reactid=""41"">"
                st_point = InStr(st_point, http.responseText, check_txt) + Len(check_txt)
                ed_point = InStr(st_point, http.responseText, "</span>")
                old_price_txt = Mid(http.responseText, st_point, ed_point - st_point)
                '---- ヤフーファイナンスフォーマット変更 20180513変更start ----
            End If

            ' 取引があった時、当日終値を取得
            If price_txt <> "---" Then
                sosa_sh.Cells(check_row, now_price_column) = CDbl(price_txt)
            Else                        ' 取引がなかった時
                sosa_sh.Cells(check_row, now_price_column) = CDbl(old_price_txt)
            End If
            sosa_sh.Cells(check_row, old_price_column) = CDbl(old_price_txt)
        Else  'コードが8桁の時(投資信託の時)
            ' 目印の"stoksPrice"">"の位置から基準価額を取得
            check_txt = "stoksPrice"">"
            st_point = InStr(1, http.responseText, check_txt) + Len(check_txt)
            ed_point = InStr(st_point, http.responseText, "</td>")
            price_txt = Mid(http.responseText, st_point, ed_point - st_point)

            ' 目印の"前日比</span>"の位置から前日比を取得
            check_txt = "前日比</span>"
            st_point = InStr(1, http.responseText, check_txt) + Len(check_txt)
            check_txt = "<span"
            If Mid(http.responseText, st_point, Len(check_txt)) = check_txt Then
                st_point = InStr(st_point, http.responseText, ">") + 1
            End If
            ed_point = InStr(st_point, http.responseText, "(")
            old_price_txt = Mid(http.responseText, st_point, ed_point - st_point)

            '---- 投信前日比0の対応 20171008変更start ----
            If old_price_txt = "---" Then ' 前日比が"---"の時
                old_price_txt = 0         ' 前日比0にする
            End If
            '---- 投信前日比0の対応 20171008変更end ----            

            sosa_sh.Cells(check_row, now_price_column) = CDbl(price_txt)
                        '現在基準価額と前日比から前日基準価額を算出
            sosa_sh.Cells(check_row, old_price_column) = CDbl(price_txt) - CDbl(old_price_txt)
        End If

        sosa_sh.Cells(check_row, now_price_column).Interior.ColorIndex = org_color ' 退避していたセルの色を戻す
        check_row = check_row + 1           ' 次の行の株価取得へ
    Loop
    Set oHttp = Nothing
End Sub

エクセルシートの様式に伴うカスタマイズ。

ここでシートに合わせて、カスタマイズする必要があるポイントは4つ。

上のVBAコードの14~17行目にある以下の部分です。

check_row = 8                   '   8行目から株価取得開始
code_column = 4                 '   識別コードの列
now_price_column = 5            '   現在株価/基準価額の列
old_price_column = 6            '   前日株価/基準価額の列

check_row = 8

これはエクセルシートで、識別コードの記載が始まっている行を設定します。

最初にあったエクセルシートだと、先頭銘柄のアマゾンのティッカーAMZNがシートの8行目から書かれているので8を設定してます。

code_column = 4

これはエクセルシートで、識別コードの記載が始まっている列を設定します。
列の場合は、A列=1,B列=2,C列=3・・・というように数えます。

最初にあったエクセルシートだと、銘柄コードが書かれているのがD列なので4を設定しています。

now_price_column = 5

これは取得した最新株価や最新基準価額を書き込む列を設定します。
列の場合は、A列=1,B列=2,C列=3・・・というように数えます。

最初にあったエクセルシートだと、最新株価はE列に書き込むので5を設定しています。

old_price_column = 6

これは取得した前日株価や前日基準価額を書き込む列を設定します。
列の場合は、A列=1,B列=2,C列=3・・・というように数えます。

最初にあったエクセルシートだと、前日株価はF列に書き込むので6を設定しています。

使用にあたり注意点です。

<注意1>

銘柄コードが空白になっていることを条件にして、株価取得を終了するようになっています。
売却したりして銘柄を削除する場合は、空白行にせずに、行削除等で上に詰めるようにしてください。

<注意2>

ヤフーファイナンスのフォーム自体がいつか変わった場合、このVBAコードでは使えなくなってしまうかもしれません。

その時は、新フォームに対応したものを紹介するつもりですが、なお、僕自身は米国株や投信の管理をしているわけではないので、障害発生に気付かない場合がありますので、コメント等で教えていただけるとありがたいです。

また、障害発生時にすぐには対応できない場合があります。
米国株や投信には対応できておりませんが、こちらの旧記事で紹介している旧VBAコードでは動作するかもしれません。(1銘柄あたり5~10秒かかってしまいますが…)

もしものときの株価自動取得VBAコード(旧低速版)です | 富士宮で貯蓄と資産運用

本記事は株価取得VBAコードの旧記事となっており、ヤフーファイナンスのHTMLフォーマットが変更になった際、新VBAコード(高速化・米国株対応・投信対応)が、正常動作しなくなった場合に備えて、用意してあるものです...

僕自身は今回紹介したコードが起動するボタンを【Quick Mode】、旧コードが起動するボタンを【Safety Mode】として、シート上に2つのボタンを用意して使っています。

<注意3>

マクロ釦の作り方や、VBAコード記述のやり方など、エクセル操作については書籍・ネット等で調べるようにしてください。
また、PER等など他項目を取得したいなどのご要望に都度対応することはできません。

サンプルシートとVBAコードがダウンロードできます。

サンプルシートとVBAコードが記載されたエクセルファイルは、こちらのダウンロード釦をクリックすると、ダウンロードできます。

なお、前日比に応じて画像や音声を出力するコードも含まれております。
それらの設定については下記記事を参考にしてください。

最狂の株式・投信管理ツール誕生!! 画像と音声で楽しめる。エクセルVBAで最新株価&投信基準価額を自動取得Ver2 | 富士宮で貯蓄と資産運用

やっぱ投資は愛情だよね。 株式・投資信託の価格変動に一喜一憂するのはあたりまえ。 愛する大事な銘柄たちだもの。ほったらかしになんてできない。 でも・・・数字だけじゃ感情移入しにくいし、損失が大きいと愛情も次第に冷えてきちゃうかも? そんな貴方に愛情1本! この管理ツールをつかえば、毎日が癒しに満たされ、どんな暴落相場が来たとしても、大好きホールドで耐えることができます。 株価取得以外に設けられてい...

ダウンロード手順

<手順1>

「ダウンロード」ボタンをクリックすると、ダウンロード方法を選択するウィンドゥが表示されるので、【名前を付けて保存(A)】をクリックしてください。

ダウンロード手順1
<手順2>

保存する場所、ファイル名を指定するウィンドウがでます。

ダウンロード手順2

ファイル名の拡張子をxlsmに変更して保存してください。
保存する場所は適当で構いません。

ダウンロード手順3

初回起動のときに・・・

ダウンロード後、このエクセルファイルを開いたときに次のようなメッセージが表示されると思いますが、それぞれ以下のように対応してください。

<保護されたビュー>

【編集を有効にする(E)】をクリックしてください。

ダウンロード手順4
<セキュリティの警告>

【コンテンツの有効化】をクリックしてください。

ダウンロード手順6
スポンサーサイト
Excel

55 Comments

たむら  

質問

mochi様

非常に有益なマクロ情報ありがとうございました。

ただ、データを読み込む度にwindowsセキュリティ入力ボックスが出てしまい、いちいち入力しなくてはならないのですが・・・そういうものなのでしょうか

2014/12/06 (Sat) 14:48 | REPLY |   

mochi  

windowsセキュリティのダイアログ対策

こんにちは。たむらさん。

> ただ、データを読み込む度にwindowsセキュリティ入力ボックスが出てしまい、いちいち入力しなくてはならないのですが・・・そういうものなのでしょうか

僕はwindows7とIE11とexcel2010の組み合わせなのですが、
今年の春頃から同じ状態になって、
しばらくは都度キャンセルで対応していました。

IEとexcel2010を以下のように設定することで解消していますが、
セキュリティに関することなので、自己責任で行って下さい。


1.IEの設定
(1)[ツール]→[インターネットオプション]を選んで、
   [セキュリティ]タグをクリックして下さい。

(2)[信頼済みサイト]を選んで、[サイト[S]]ボタンをクリックして下さい。
(3) 上の入力ボックスに、http://stocks.finance.yahoo.co.jp/を入力して 
    [追加]ボタンをクリックして下さい。
(4)このゾーンのセキュリティレベルを低(一番下)に設定して下さい。

2.Excelの設定
  ※IEの設定を行ってからでないとできません。
(1)[開発]タグを選んで、[マクロのセキュリティ]をクリックして下さい。
(2)[外部コンテンツ]のデータ接続のセキュリティ設定で、
   [すべてのデータ接続を有効にする(推奨しません)]をチェックして下さい。
(3)[信頼できる場所]で選んで下さい。
(4)[プライベートネットワーク上にある・・・]をチェックして下さい。
(5)[新しい場所の追加]ボタンをクリックして下さい。
(6)パスにhttp://stocks.finance.yahoo.co.jp/を入力して、
    OKボタンで登録して下さい。
(7)再度EXCELを立ち上げ直して下さい。

(推奨しません)と書かれている所をチェックすることになるので、
あまりお勧めできる方法ではありませんが、
今のところ、僕が確認できている方法はコレだけです。

セキュリティの部分で不安があるのであれば、
国内株式とETFだけなら、うっどさんの株ポートフォリオもお勧めです。
コピーしてExcelに貼り付けすることもできますので。

少しでも参考になれば幸いです。


2014/12/06 (Sat) 19:18 | REPLY |   

ど素人  

教えて下さい

はじめまして。
エクセルで株を管理できないかと探していたところココに辿りつきました。

突然の質問で申し訳ないのですが、
株価だけでなく、PER・PBR・単元株数・年初来高値・年初来安値等も
自動取得したいのですがどうすればよいのでしょうか?

また、銘柄コードを入力すれば銘柄名が自動で反映されるようにしたいのですが…

VBAやマクロが全く分からない素人で申し訳ございませんが、
教えて頂けるとありがたいです。

追記)
色々調べても難しくて分からなかったので、無理を承知でお尋ねしてしまいました。
すみませんでした。

2015/02/17 (Tue) 17:52 | EDIT | REPLY |   

mochi  

それはね・・・

禁則事項です

2015/02/17 (Tue) 20:31 | REPLY |   

たに  

ありがとうございました。

かなり幅広く株価、基準価格を調べられるExcelのVBAを探して、ここにたどり着きました。使い勝手のよいものを教えていただき、ありがとうございました。色々な金融機関と取引していると、こういったものが大変役に立ちます。これからも色々と教えてください。

2016/02/21 (Sun) 16:31 | REPLY |   

mochi  

ご丁寧にありがとうございます。

こんにちは。たにさん。

お役に立てそうで良かったです。
ご丁寧なコメントありがとうございます。
ブログ運営の励みになります。

また時々遊びに来てもらえると嬉しいです。

2016/02/21 (Sun) 21:56 | REPLY |   

ゆゆゆ  

はじめまして、自動取得のVBA、大変便利に使わせていただいております。

ただ、一部の証券コードでエラーが出てしまうようですので、ご報告します。
また、エラー解消が自力ではなかなか難しいので、解決方法をご存知でしたらご教示いただきたく存じます。
<エラー内容>
・実行時エラー5
・「ed_point = InStr(st_point, http.responseText, "前日終値")」部分が黄色で表示
・証券コード1413で発生(その他、3384でも同様のエラーが発生)
・VBAコードの黄色部分は上記のとおりだが、エクセル上では当日終値が黄色で表示(金額はブランクのまま)

2016/07/03 (Sun) 19:18 | REPLY |   

mochi  

東証上場銘柄しか対応していません

はじめまして。ゆゆゆさん。

> ・証券コード1413で発生(その他、3384でも同様のエラーが発生)

【1413】桧家ホールディングス、【3384】アークコアは、
いずれも名古屋証券取引所に上場している銘柄ですね。

あのVBAコードではアクセスする際に
市場コードとしてURL末尾に".T"を付けているので、
東証上場銘柄(マザーズ、JASDAQ含む)しか対応しておりません。

ひとまず地方の証券取引所に対応するための変更点を下記に示します。

変更箇所1(URL設定のところを変更)
If Len(code) <> 8 Then 'コードが8桁以外の時(日本株式の時)
If IsNumeric(code) Then ' コードが数値の時
url = "http://stocks.finance.yahoo.co.jp/stocks/detail/?code=" & code & ".T"
' ヤフーファイナンスの株価情報を読み込み開始
Else ' コードが数値でない時(米国株式の時)

   ↓ 上記コードを下のように変更

 If Len(code) <> 8 Then 'コードが8桁以外の時(日本株式の時)
 If IsNumeric(Left(code, 4)) Then ' コード左4桁が数値の時
 If IsNumeric(code) Then ' コードが数値のみ
 url = "http://stocks.finance.yahoo.co.jp/stocks/detail/?code=" & code & ".T"
' ヤフーファイナンスの株価情報を読み込み開始
Else ' コードに市場コードが付与されている時
url = "http://stocks.finance.yahoo.co.jp/stocks/detail/?code=" & code
   ' ヤフーファイナンスの株価情報を読み込み開始
End If
Else ' コードが数値でない時(米国株式の時)


変更箇所2(株価取得のところを変更)
 If Len(code) <> 8 Then 'コードが8桁以外の時(株式の時)
 If IsNumeric(code) Then ' コードが数値の時

   ↓ 上記コードを下のように変更

If Len(code) <> 8 Then 'コードが8桁以外の時(株式の時)
 If IsNumeric(Left(code, 4)) Then ' コード左4桁が数値の時


以上の変更を行った上で、エクセル表のコードのところに、
【1413】桧家ホールディングスなら 1413.N
【3384】アークコアなら 3384.N
というように銘柄コードに.Nを追加して入力して下さい。

名古屋証券取引所(セントレックス含む)は.N
札幌証券取引所(アンビシャス含む)は.S
福岡証券取引所(Q-Board含む)は.F
を銘柄コード末尾に追加すれば株価取得できます。

いずれ記事中のVBAコードを変更するようにしますが、
取り急ぎ、変更点のみ紹介しました。


2016/07/03 (Sun) 20:57 | REPLY |   

ゆゆゆ  

さっそくのご返信ありがとうございます。

HTMLソースのほうにばかり気を取られていて、URLの「T」はすっかり見逃してしまっていました。

お示しいただいたコードに変更したところうまくいきました。
これで保有銘柄の管理が効率よく行えます、ありがとうございました。

2016/07/04 (Mon) 22:33 | REPLY |   

mochi  

お役にたてたようでなによりです。 ^^

こんにちは。ゆゆゆさん。

> HTMLソースのほうにばかり気を取られていて、URLの「T」はすっかり見逃してしまっていました。
> お示しいただいたコードに変更したところうまくいきました。
> これで保有銘柄の管理が効率よく行えます、ありがとうございました。

 早速試していただけたみたいで、動作報告ありがとうございます。
 一応動作確認したコードではありますが、
 うまく伝えられたか心配だったので、安心しました。

 地方の取引所については、今まで特にそのような要望がなかったので、
 ほったらかしにしたままでいました。 ^^;

 せっかくなので、近いうちに記事中のVBAコードと
 ダウンロードファイルを更新しておこうと思います。
 
 コメントありがとうございました。


2016/07/05 (Tue) 21:34 | REPLY |   

Kiki  

ドル円レートを知るには

こんなすごいことができるとはびっくりしてます。
初歩的な質問で恐縮ですが、ドル円レートを出すには、どうしたらいいのでしょうか?

2016/12/12 (Mon) 21:34 | EDIT | REPLY |   

mochi  

Re: ドル円レートを知るには

Excelシートに取り込みたいってことですよね?

VBAではないですが、このサイトにWebクエリを使って、
為替レートを取得する方法が紹介されていますので、
参考にされてみてはいかがでしょうか?
http://www.hello-pc.net/howto-excel/exc_rate/


2016/12/12 (Mon) 23:37 | REPLY |   

カーバンクル  

エラーが出ます

おはようございます、はじめまして、よろしくお願いします。

実行時エラー '-2147024891(80070005)':

アクセスが拒否されました。

' ヤフーファイナンスをHTML形式で読み込む
http.Open "GET", URL, False
http.setRequestHeader "If-Modified-Since", "Thu, 01 Jun 1970 00:00:00 GMT"
http.Send

のhttp.Sendでエラーになっています。

一昨日までは動いていたのですが…(´;ω;`)ウゥゥ

windows10です。

2017/03/30 (Thu) 10:40 | REPLY |   

チー  

出来高の取得方法

初めまして。
こちらのVBA、ぜひ利用させていただきたいと思います。
一点、ご教授お願いいたします。
東証一部の出来高と個別銘柄の出来高を取得するには、どうしたらいいのでしょうか?
VBAは全く分からないので、申し訳ございませんがよろしくお願いいたします。

2017/03/30 (Thu) 12:07 | REPLY |   

mochi  

Re: エラーが出ます

はじめまして。カーバンクルさん。

> 実行時エラー '-2147024891(80070005)':
> アクセスが拒否されました。
> のhttp.Sendでエラーになっています。
> 一昨日までは動いていたのですが…(´;ω;`)ウゥゥ
> windows10です。

僕の環境(windows7ですが)では今日も正常動作してますね。

この前windows updateの更新プログラムをダウンロードしている最中に
株価取得VBAを実行したらエラーで止まってしまうことがありました。
プログラムダウンロードが優先されて、
VBAでのWebアクセスが中断されてしまうことがあるようです。

あとはヤフーファイナンスのサイト自体が応答していないとか・・・?

お役に立てないかもしれませんが、
僕の経験ではこれぐらいしか思い浮かびません。


2017/03/30 (Thu) 20:52 | REPLY |   

mochi  

Re: 出来高の取得方法

はじめまして。チーさん。

> 東証一部の出来高と個別銘柄の出来高を取得するには、どうしたらいいのでしょうか?
> VBAは全く分からないので、申し訳ございませんがよろしくお願いいたします。

東証一部はとりあえずとして、個別銘柄の出来高取得のコードを下記に示します。

If Len(code) <> 8 Then 'コードが8桁以外の時(株式の時)
If IsNumeric(Left(code, 4)) Then ' コード左4桁が数値の時
' 目印の"stoksPrice"">"の位置から現在株価を取得
check_txt = "stoksPrice"">"
st_point = InStr(1, http.responseText, check_txt) + Len(check_txt)
ed_point = InStr(st_point, http.responseText, "</td>")
price_txt = Mid(http.responseText, st_point, ed_point - st_point)

' 目印の"innerDate"と"前日終値"の位置から前日株価を取得
st_point = InStr(1, http.responseText, "innerDate")
ed_point = InStr(st_point, http.responseText, "前日終値")
tmp_txt = Mid(http.responseText, st_point, ed_point - st_point)

check_txt = "<strong>"
st_point = InStr(1, tmp_txt, check_txt) + Len(check_txt)
ed_point = InStr(st_point, tmp_txt, "</")
old_price_txt = Mid(tmp_txt, st_point, ed_point - st_point)

' 目印の"<dt class="title">出来高"位置から出来高を取得
ed_point = InStr(1, http.responseText, "<dt class=""title"">出来高")
st_point = ed_point - 100
check_txt = "<strong>"
st_point = InStr(st_point, http.responseText, check_txt) + Len(check_txt)
ed_point = InStr(st_point, http.responseText, "</")
sosa_sh.Cells(check_row, 20) = CDbl(Mid(http.responseText, st_point, ed_point - st_point))

Else ' コードが数値でない時(米国株式の時)

 VBAコード中に上記青色部分のコードを追加して下さい。

 sosa_sh.Cells(check_row, 20)は値を書き込むセルを指定します。
 check_rowは株式コードが入力されているところと同じ行を示します。
 20は列位置を表していますが、自身のシートに応じて、
 出来高を書き込みたいセルの列番号を設定するようにして下さい。


 上で言っていることが理解不能であれば、諦めていただくか、
 もしくはまずはExcelVBAの勉強をしていただけるようお願いします。



 

2017/03/30 (Thu) 21:05 | REPLY |   

名無し  

To mochiさん

> 実行時エラー '-2147024891(80070005)':
> アクセスが拒否されました。
> のhttp.Sendでエラーになっています。
> 一昨日までは動いていたのですが…(´;ω;`)ウゥゥ
> windows10です。

私の環境でも昨日からエラーになりました。
なんか調べてみたところ、ヤフーファイナンスではそもそもこういうプログラムを使った株価の自動取得が禁止されているようで、
頻繁にする人からのアクセスを禁止することがあるみたいです。

なので、私は諦めて別のサイトから取得できるように書き換えてみました。

参考になれば。

2017/03/31 (Fri) 10:01 | EDIT | REPLY |   

チー  

To mochiさん

早速のご回答ありがとうございます。
無事、取得することができました。
実は今まで違うVBAを使って取得していたのですが2,3日前からアクセスが拒否されるようになってしまい、非常に困っていました。
深く感謝申し上げます。

2017/03/31 (Fri) 10:15 | REPLY |   

mochi  

Re: To mochiさん

名無しさん。情報提供ありがとうございます。

> 私の環境でも昨日からエラーになりました。
> なんか調べてみたところ、ヤフーファイナンスではそもそもこういうプログラムを使った株価の自動取得が禁止されているようで、
> 頻繁にする人からのアクセスを禁止することがあるみたいです。
> なので、私は諦めて別のサイトから取得できるように書き換えてみました。
> 参考になれば。

 とりあえず、データ取得間隔として0.5秒間のタイマーを設けるコードを追記してみました。
 僕のところではエラーが出ないので効果があるかわかりませんが。。。

 もし僕もヤフーファイナンスに拒否られることがあるようであれば、
 別サイトからの取得を考えなければなりませんが、
 手間もかかりそうですし、それまで今のままでいこうと思ってます。 ^^;



2017/03/31 (Fri) 20:59 | REPLY |   

mochi  

Re: To mochiさん

こんばんわ。チーさん。

> 早速のご回答ありがとうございます。
> 無事、取得することができました。
> 実は今まで違うVBAを使って取得していたのですが2,3日前からアクセスが拒否されるようになってしまい、非常に困っていました。
> 深く感謝申し上げます。

 ひとまずお役に立てたようで良かったです。
 こちらのVBAコードでもアクセス拒否報告があるので、
 同じようになってしまうかもしれません。

 VBAコード中にタイマーを設ける部分を追記してありますので、
 それをフォローしておいた方が良いかもしれません。
 気休めにしかならないかもしれませんが。

 コメントありがとうございました。


2017/03/31 (Fri) 21:03 | REPLY |   

カーバンクル  

逃げる事になりますが…。

こんにちは

逃げる事になりますが、対策は取れました。

新しいシートに、
With ActiveSheet.QueryTables.Add
で貼り付けて、そこから検索すると楽です。

stockweatherの個別銘柄のページだと、PER PBRが載っているので。

ご参考までにm(__)m

如何でしょうか?

2017/04/04 (Tue) 16:19 | REPLY |   

mochi  

Re: 逃げる事になりますが…。

こんにちは。カーバンクルさん。

クエリテーブルを使う方式ですね。
Yahooファイナンスのフォーマットがよく変わることがあるようなので、
今の方法でアクセスしてました。

stockweatherでは東証上場銘柄のみですが、
今のVBAの一部を下記青文字のように変更することで対応できます。

1.URLを設定しているところ
If Len(code) <> 8 Then 'コードが8桁以外の時(日本株式の時)
If IsNumeric(Left(code, 4)) Then ' コード左4桁が数値の時
If IsNumeric(code) Then ' コードが数値のみ
url = "http://www.stockweather.co.jp/sw2/detail.aspx?code=" & code ' ヤフーファイナンスの株価情報を読み込み開始
Else ' コードに市場コードが付与されている時


2.株価・前日株価を取得するところ
If Len(code) <> 8 Then 'コードが8桁以外の時(株式の時)
If IsNumeric(Left(code, 4)) Then ' コード左4桁が数値の時
' 目印の"現在値</th><td><span class="strong">"の位置から現在株価を取得
check_txt = "現在値</th><td><span class=""strong"">"
st_point = InStr(1, http.responseText, check_txt) + Len(check_txt)
ed_point = InStr(st_point, http.responseText, "</span>")
price_txt = Mid(http.responseText, st_point, ed_point - st_point)

' 目印の"前日終値</th><td>"と"</td>"の位置から前日株価を取得
check_txt = "前日終値</th><td>"
st_point = InStr(1, http.responseText, check_txt) + Len(check_txt)
ed_point = InStr(st_point, http.responseText, "</td>")
old_price_txt = Mid(http.responseText, st_point, ed_point - st_point)

Else ' コードが数値でない時(米国株式の時)


http.responseTextに格納されるソースコードから該当箇所を抜き出しているだけなので、
VBAの文字列処理関数InStrやMidをネット検索するなどして理解してもらえれば、
どんなサイトにでも応用できます。

僕の紹介しているVBAは投信や米国株式の取得もできるようになっているのが特徴なので、
自分の動作環境で支障がない限りは今のままで行こうと思ってます。

情報提供ありがとうございました。


2017/04/04 (Tue) 20:38 | REPLY |   

あぷてぃ  

No title

はじめまして
VBA活用させていただきたいと思います。
アメリカ株式のことなのですが、コードMSFTはOKなのですが、NYダウのコード^DJI、S&P500のコード^GSPCでの取得で「型が一致しません」というエラーにかかります。
原因わかりますでしょうか?
よろしくお願いいたします。

2017/04/23 (Sun) 10:13 | REPLY |   

mochi  

Re: No title

> アメリカ株式のことなのですが、コードMSFTはOKなのですが、NYダウのコード^DJI、S&P500のコード^GSPCでの取得で「型が一致しません」というエラーにかかります。
> 原因わかりますでしょうか?

原因というか…株価指数の場合はフォーマットが異なるため
取得には対応していないということだと思います。


2017/04/23 (Sun) 16:05 | REPLY |   

johnko  

米国株式について

はじめまして
いつも便利に使わせて頂いております。

4月後半あたりから米国株がエラーになってしまって株価取得ができません。
米国株の列を削除してから株価取得をすると国内株や投資信託は問題なく
取得できます。

VBAやマクロに関して見直してみたのですが、自分の知識では修正できません。
どのように修正すれば良いのか教えていただけると助かります。

よろしくお願いします。

2017/05/06 (Sat) 08:39 | REPLY |   

mochi  

Re: 米国株式について

はじめまして。johnkoさん。

情報提供ありがとうございます。

> 4月後半あたりから米国株がエラーになってしまって株価取得ができません。
> 米国株の列を削除してから株価取得をすると国内株や投資信託は問題なく
> 取得できます。

 米ヤフーファイナンスへアクセスしようとするとリダイレクトエラーが出るようになっていました。
 XMLHTTPバージョンやURLをいろいろ変えて試しましたが解消されませんでした。

 米ヤフーファイナンスのサイト構成が変わって、
 XMLHTTPによるリダイレクト要求との相性が合わなくなってしまったものと思われます。
 まぁ。僕自身も通信部分はよく分からないのですが・・・ 

 とりあえず米国株式をグーグルファイナンスから取得するように、
 記事中のコードを修正(40-41行目、78-94行目)してありますので、
 それを参考にコード変更もしくはExcelデータをダウンロードするようにしてください。



2017/05/06 (Sat) 14:36 | REPLY |   

johnko  

To mochiさん

早速の回答ありがとうございます。

早速ダウンロードして保有銘柄コードで試してみました。
今まで通り取得できるようになりました。

ありがとうございました。

2017/05/06 (Sat) 18:53 | REPLY |   

mochi  

Re: To mochiさん

こんばんわ。johnkoさん。

動作報告ありがとうございます。

ひとまず取得できるようになったみたいで良かったです。
グーグルファイナンスもサイト変更等によって、
いつ同様にアクセスできなくなるか分かりませんが・・・ ^^;

またエラーが出るようになったらご連絡下さい。







2017/05/06 (Sat) 19:42 | REPLY |   

-  

管理人のみ閲覧できます

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

2017/08/20 (Sun) 21:44 | REPLY |   

TH69  

参考にさせて頂きました

mochi様、始めまして。TH69と申します。

最近、米国株の投資を始めたのですが、投資情報をエクセルで管理しようと思い試行錯誤中でした。

それで、最新の株価情報などを自動で取得できないかと検索してみたところ、mochi様のページがヒットしました。

エクセルVBAはある程度いじれるので、コードを参考にして試してみたら、見事に取得できるようになりました。(米国の株価と年間配当率の部分です)ありがとうございました。

今後さらに改良を重ねて使いやすいエクセルファイルにしたいと思います。

2017/10/22 (Sun) 16:13 | EDIT | REPLY |   

mochi  

Re: 参考にさせて頂きました

こんばんは。はじめましてTH69さん。

株式管理の参考になったようでなによりです。
ウェブスクレイピングの応用性は高いと思いますので、
目的に応じていろいろ試してみてください。

ご丁寧なコメントをいただきありがとうございました。

2017/10/22 (Sun) 23:12 | REPLY |   

-  

管理人のみ閲覧できます

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

2017/12/13 (Wed) 15:02 | REPLY |   

mochi  

Re: 高値と安値の取得方法

こんばんは。鍵コメさん。

この記事の株価取得VBAのものはサイトから直接HTMLソースコードを読み込んで、
そこから文字列関数を用いて目的のデータを取得するようにしています。

普通の高値・安値が取得できる技量があれば、
ストップ高・ストップ安とかの影響はないのではないかと思いますが…?

例えば、普通の高値とストップ高の違いは、
strongタグ内でのclass宣言の有無になります。

普通の高値として、strongタグで挟まれた数値部分が取得できていれば、
別にストップ高だろうと関係なく取得できると思うのですけど。

申し訳ありませんが、ご質問いただいた文面だけでは、
これ以上なんとも回答のしようがありません。

あと、どのような理由で鍵コメントにしたのかは存じませんが、
公開コメントでも互いに不利益に繋がるような内容は含まれていないように見受けられます。
このような場合、僕もどのような形で回答すべきか悩んでしまいますので、
特に支障がなければ公開コメントで質問してくださるようお願いします。

2017/12/13 (Wed) 22:26 | REPLY |   

TH69  

グーグルファイナンスのURLが変更されたようです

お世話になります。

掲題の件ですが、

http://www.google.com/finance?q=」の部分が

https://finance.google.com/finance?q=」となったようです。

それから教えて頂いたコードを使って作成した米国株を管理するエクセルファイルを「TH69の亜米利株」としてベクターで公開しました。

http://www.vector.co.jp/soft/winnt/business/se517044.html

何しろ米国株を始めたのは今年の10月からという超初心者ですので、根本的に何か間違っていないかが心配です(汗)。お暇な時にでも試して頂いて感想などお聞かせ頂ければありがたく思います。

では、これからもよろしくお願いします。

2017/12/20 (Wed) 22:37 | EDIT | REPLY |   

mochi  

Re: グーグルファイナンスのURLが変更されたようです

 おはようございます。TH69さん。

 グーグルファイナンスのURL変更情報ありがとうございます。

 今のところはリダイレクト処理によって正規URLに誘導されていますが、
 将来的にはどうなるかわからりませんので、
 いただいた情報を元に株価取得ExcelVBAの記事にフォローさせていただきました。


> それから教えて頂いたコードを使って作成した米国株を管理するエクセルファイルを「TH69の亜米利株」としてベクターで公開しました。

 ダウンロードして拝見させていただきました。
 機能が充実していて素晴らしいですね。

 ただ残念ながら僕自身は米国株取引をしてないんで、
 仮に根本的な間違いがあったとしても、それに気付くことができません。(;^_^A アセアセ・・・
 お力になれずすみません。 m(_ _)m

 ダウンロードしたファイル内のReadMeには、
 TH69さんへの連絡メールアドレスも記載されておりますし、
 不具合などがあればユーザーさんから情報が寄せられてくると思いますよ。

 そういったことへの対応は大変だろうと思いますが、
 より良いツールに仕上がっていくように頑張ってください。

 コメントありがとうございました。

2017/12/21 (Thu) 08:32 | REPLY |   

Naomi  

To mochiさん

素晴らしいツールをありがとうございます。

こんな便利なものがあって大変助かっています。

以前のコメントから出来高や時価総額は取得することが可能なのですが、PERについてはうまく取得できません。

根本的にVBAを理解していないからだと思いますが、取得するヒントをいただけませんでしょうか。

2018/01/08 (Mon) 20:42 | REPLY |   

mochi  

Re: To mochiさん

 はじめましてNaomiさん。

 出来高や時価総額は取得できているということなので要点だけお伝えします。

 出来高などは<strong>タグに囲まれている部分は数値だけでしたが、
 PERやBPRは「(連) 9.14」といった感じで数値でない文字も含まれています。

 数値以外の文字が含まれたものをCDbl関数で変換しようとするとエラーになります。
 先頭位置をずらしながらIsNumeric関数で数値化できるかチェックしていき、
 最初に数値化できた位置からの文字列をCDbl関数で変換するようにしてください。

 それが面倒であれば、最初に「(連)」もしくは「(単)」があるものとして、
 その文字数分だけ先頭位置をずらしてCDbl関数で数値化すれば良いと思います。

 CDblやIsNumeric関数の説明についてはググってみてください。

2018/01/08 (Mon) 21:57 | REPLY |   

三毛猫  

株価取得EXCEL、大変重宝に使わせていただいています。あたらめてありがとうございます。

ところで、ETFの<1553>を指定すると、「実行時エラー'5':プロシージャの呼び出しまたは引数が無効です」となり、最新株価が表示されません。修正することは可能でしょうか。

2018/01/18 (Thu) 19:12 | REPLY |   

mochi  

地方証券取引所の銘柄はコード末尾に「ドットと記号」を付けてくださいね。

こんばんは。三毛猫さん。

> 株価取得EXCEL、大変重宝に使わせていただいています。あたらめてありがとうございます。

 趣味で作ったものですが、少しでもお役に立てているのであれば僕もうれしいです。
 ありがとうございます。

> ところで、ETFの<1553>を指定すると、「実行時エラー'5':プロシージャの呼び出しまたは引数が無効です」となり、最新株価が表示されません。修正することは可能でしょうか。

【1553】MAXIS S&P東海上場投信は、名古屋証券取引所でしか取り扱っていない銘柄ですね。
 こんなETFもあるんですねぇ~
 ですので、記事中にも記載してあるように、
 銘柄コードには末尾に".N"をつけて、"1553.N"と入力してください。

2018/01/18 (Thu) 20:34 | REPLY |   

三枝  

大変有益なVBAコード!

数年前から利用させてもらっていますが、あらためて非常に有益なコードだと感謝しております。

私は中学生のころBasicでプログラミングしていたのですが、これからVBAを勉強してみるきっかけになりそうです。

2018/02/22 (Thu) 12:59 | REPLY |   
mochi

mochi  

高評価ありがとうございます!!

はじめまして三枝さん。

> 数年前から利用させてもらっていますが、あらためて非常に有益なコードだと感謝しております。

既にご利用されている方からの高評価、とても嬉しく思います。 <(_ _*)> アリガトォ 

> 私は中学生のころBasicでプログラミングしていたのですが、これからVBAを勉強してみるきっかけになりそうです。

インターネット環境のおかげもあって、VBAに関するプログラミング資料は豊富にありますし、
またExcelはパソコンにプリイントールされている場合も多いので、
VBAは手軽にプログラミングが楽しめるできる言語だろうと思っています。
是非、挑戦してみてください。 (*'-')b

励みになるコメントありがとうございました。 (^-^*)/

2018/02/22 (Thu) 17:34 | REPLY |   

いつも拝見  

質問

今ダウンロードできるものは地方証券対応でしょうか❓
あとダウンロードしたもので管理銘柄数を増やしたければ表もチャートも単純に行まるごとコピーで最下段に挿入でもよいのでしょうか❓

2018/03/04 (Sun) 12:09 | REPLY |   
mochi

mochi  

Re: 質問

> 今ダウンロードできるものは地方証券対応でしょうか❓
> あとダウンロードしたもので管理銘柄数を増やしたければ表もチャートも単純に行まるごとコピーで最下段に挿入でもよいのでしょうか❓

地方証券取引所の銘柄の場合は、銘柄コード末尾に下記2文字を付け足してください。
名古屋証券取引所(セントレックス含む):.N
札幌証券取引所(アンビシャス含む):.S
福岡証券取引所(Q-Board含む):.F
(例)名証の【1413】桧家ホールディングスなら 1413.N

チャート?が何を指しているかは分かりませんが、
表は行ごとコピー挿入でOKです。

2018/03/04 (Sun) 14:42 | REPLY |   

tenbo  

使わせていただきます。

株価の変化を確認するため年に数回全株価をダウンロードできるサイトで利用してきましたが、四季報も発売されたこともありサイトを見てみると有料になっており、頻繁に利用する訳では無いのでどうしたものかと考えていたところにこちらを発見いたしました。
テスト的に使ってみると良好に動作いたしました。
以前自分でも株探からの取得をVBAで作成したこともありましたが、動作が遅かったです(笑)
ありがとうございました。

2018/03/17 (Sat) 22:07 | REPLY |   
mochi

mochi  

ご丁寧にありがとうございます。

はじめまして。tenboさん。

お役に立てそうで良かったです。

ヤフーファイナンスに頻繁に連続アクセスすると拒否られることがあるという話もあったので、
これでも0.5秒間のタイマーを設けてあります。
そのタイマーがなければ処理時間は半分程度で済んでいるだろうと思われます。

VBAからWebスクレイピングする手法はいくつかありますが、
僕が知っている中では紹介したコードで用いている手法が一番早いと認識しています。

保有銘柄の運用管理にあたり、株式分割や株式統合が行われた際には、
株数や購入株価を入力し直す必要がありますので、そこだけ気を付けてください。

日本株の運用管理だけであれば、下記記事で紹介している株ポートフォリオもお勧めです。
https://mochi1999.blog.fc2.com/blog-entry-257.html
こちらは株式分割や株式統合に対して、株数や購入株価を自動で修正してくれます。

コメントありがとうございました。

2018/03/18 (Sun) 15:00 | REPLY |   

senhapi  

米国株の取得ができなくなってしまいました

はじめまして。いつも素晴らしいツールを使わせて頂き、感謝しております。
googleファイナンスの仕様が変更になったのか、米国株のティッカーで株価取得ができなくなってしまいました。
マクロを変更しようとチャレンジしましたが、断念です
お忙しい事とは思いますが、修正対応をお願いできませんでしょうか
よろしくお願い申し上げます

2018/03/22 (Thu) 21:06 | REPLY |   
mochi

mochi  

Re: 米国株の取得ができなくなってしまいました

はじめまして。senhapiさん。

グーグルファイナンスの仕様変更によって、
URL指定でダイレクトにアクセスできなくなってしまいました。

以前使えなくなっていた米国ヤフーファイナンスURL指定が
ちゃんとできるようになっていたので、
再び米国ヤフーファイナンスから取得するようにします。

取り急ぎ変更箇所を下記に示します。

41行目
url = "https://finance.google.com/finance?q=" & code
  
url = "https://finance.yahoo.com/quote/" & code

81~97行目
'---- グーグルファイナンス取得対応 20170506変更start ----
   :
'---- グーグルファイナンス取得対応 20170506変更end ----
  
'---- ヤフーファイナンス対応 20180322変更start ----
' 目印の<!-- react-text: 36 -->の位置から現在株価を取得
check_txt = "<!-- react-text: 36 -->"
st_point = InStr(1, http.responseText, check_txt) + Len(check_txt)
ed_point = InStr(st_point, http.responseText, "<!-- /react-text -->")
price_txt = Mid(http.responseText, st_point, ed_point - st_point)

' 目印のPrevious Closeの位置から前日株価を取得
check_txt = "Previous Close"
st_point = InStr(1, http.responseText, check_txt) + Len(check_txt)
check_txt = "<!-- react-text: 42 -->"
st_point = InStr(st_point, http.responseText, check_txt) + Len(check_txt)
ed_point = InStr(st_point, http.responseText, "<!-- /react-text -->")
old_price_txt = Mid(http.responseText, st_point, ed_point - st_point)
'---- ヤフーファイナンス対応 20180322変更end ----

2018/03/22 (Thu) 23:55 | REPLY |   

senhapi  

ありがとうございます

この度はご面倒を言い、申し訳ないです。
素晴らしく早いご対応と改善策を提示頂き、感謝致します。
いますぐ、試みる事は出来ませんが、頂いた改善策でやってみます。
ありがとうございます!

2018/03/24 (Sat) 00:40 | REPLY |   
mochi

mochi  

どういたしまして

こんにちは。senhapiさん。

今回は次の日午前中休みだったことから、たまたま時間が取れただけです。

当該記事にあるVBAコードならびにサンプルシートは修正してあります。

ちなみに今回の変更によりコード欄にJPY=Xを記入した場合、
ドル円レートが取得できるようになっています。
評価額の円換算などに利用していただければと思います。

情報提供ありがとうございました。

2018/03/25 (Sun) 23:53 | REPLY |   

yoshi  

米国株、ETF価格が取得できません

こんにちわ。
株価ETF価格取得ツールを提供していただきありがとうございます。

先ほど確認したのですが、「実行時エラー’13’: 型が一致しません」となり取得できません。
デバッグより、103行目sosa_sh.Cells(check_row, old_price_column) = CDbl(old_price_txt)
でエラーとなっています。

素晴らしいツールで今後も利用したいと考えていますので、確認をお願いしたいと思います。よろしくお願い申し上げます。

2018/04/25 (Wed) 12:12 | REPLY |   

yoshi  

先ほどの件について

先ほどの米株、ETFの価格が取得できない件ですが、あらためてV3.06をダウンロード後展開&移植したら取得できました。それまでは、貴HPに展開してあったVBAをコピー、私自身の管理ファイルにペーストしたら取得できませんでした。お騒がせしまし申し訳ありませんでした。

2018/04/25 (Wed) 13:30 | REPLY |   
mochi

mochi  

Re: 先ほどの件について

はじめまして。yoshiさん。

大変失礼しました。 <(_ _)> スンマセン

記事中に記載されているVBAコードの方で、変更フォローされていない箇所が2つありました。
先程、記事中VBAコードを修正しておきました。

ご指摘くださいましてありがとうございました。ヾ(^-^;)

2018/04/25 (Wed) 23:46 | REPLY |   

shin  

No title

はじめてコメントさせていただきます。

有益なツールを適用頂き有難うございます。
先月末より利用させていただいているのですが、本日利用したところ、上段のyoshiさん同様
「実行時エラー’13’: 型が一致しません」となり取得できなくなっておりました。

HPよりツールをダウンロードしているため、Verは3.06です。

ご確認頂ければ大変助かります。よろしくお願い致します。

2018/05/12 (Sat) 17:57 | REPLY |   
mochi

mochi  

米ヤフーファイナンスのデータフォーマットが仕様変更されていました。

はじめてshinさん。

米ヤフーファイナンスのデータフォーマットが仕様変更されたことにより、株価取得位置の目印となるキーワード自体が無くなってしまっていました。
現在のフォーマット仕様に対応させるように、VBAコードならびにエクセルファイル(V3.07)をフォローしましたのでご確認ください。

基本的にこの株価取得プログラムはサイトの表示フォーマットに大きく影響されます。
今回のデータフォーマットもいつまで続けてくれるか分かりません。
年に2~3回などの高い頻度で発生するようであれば、私も対応しきれませんので、その際は米国株式を株価取得の対象から外すことも考えております。
そのことをご承知の上で利用してくださるようお願いします。

2018/05/13 (Sun) 11:14 | REPLY |   

shin  

To mochiさん

この度は迅速な対応頂き、有難うございました。
改めてツールダウンロードさせて頂き、反映したところ、無事株価取得ができるように
なりました。

今後とも利用させて頂きたいと思っておりますので、よろしくお願い致します。

2018/05/13 (Sun) 15:45 | 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 の資産運用