株主優待満喫~いつかは億り人を夢見て♪

優待三昧の生活を満喫しながら、あわてずのんびりコツコツと投資に励む日記です

STUDIOUS 立会外分売 落選

本日は、STUDIOUSの立会外分売に申し込んでみましたが、見事に落選となりました^^でも、やっぱり欲しかったので、通常取引で購入致しました。買った直後に下落してしまい「これは失敗したかな?」と思いましたが、最終的には上昇してひと安心。平均取得額はかなり上がってしまいましたが(940円→1368円)、ここはまだまだ伸びてくれるものと信じてます!

と言いつつ前回940円で購入した200株は1300円ぐらいで既に半分売ってしまっているのですが^^

 【取引実績2016年5月11日】

◆買付

2158:UBIC(追加)

3415:STUDIOUS(追加)

◆売却

なし 

コックス株主優待&本日の株式取引(5月10日)

こんばんは。もうこんな時間になってしまったので、本日は簡単に。。

2日連続STOP高だった、データセクション。。とりあえず半分だけ利確しました。でも、本日のほぼ底値で売却することに(泣)

本日の高値:1240円 売却:1065円。ちょっと損した気分です^^

【取引実績2016年5月10日】

◆売却

3905:データセクション(一部)

◆買付

なし

 

そして、優待戦士の『コックス』さんから、株主優待券が届いてました。

******************

9876:(株)コックス

<2月末日優待>

株主優待券

100株以上:2,000円分

500株以上  :4,000円分

1,000株以上 :6,000円分

2,000株以上 :10,000円分

******************

f:id:ryuponn:20160511011804j:plain

100株所有の2名義分で計4,000円相当の株主優待券です。また、そのうち買いに行きましょっと♪

現在の華麗なる優待戦士たちはこちら↓

華麗なる優待戦士たち - 株主優待満喫~いつかは億り人を夢見て♪

エクセルで株価取得ソフト なんとか動作した^^

この週末は特に大きな予定もなく時間があったので、いつかはやってみようと思っていたエクセルVBAでの株価取得を頑張ってみました。

f:id:ryuponn:20160508204202p:plain

上記、「株価更新」ボタンを押下して、背景黄色部分の「株価、1株配当、PBR、PER」を自動取得。データの取得元は、お馴染みのヤフーファイナンスで、下記、赤枠で囲った部分になります。

f:id:ryuponn:20160508205804p:plain

この手のソフトについては、ネット上にたくさんフリーソフトとしてアップされておりますので、私も今まではそれらの一つを利用しておりました。私は資産管理をエクセルで行っておりまして、そのフリーソフトで各種指標値を取得し、結果の部分をコピーして自分の管理しているエクセルへ貼り付けておりました。まあ、これでもそんなに手間ではないのですが、どうせならボタン一発で、直接更新できた方が便利かなということで、今回チャレンジ!あとは、エクセルVBAのお勉強も兼ねてます。

以下、出来上がったVBA Codeです。

Sub Click_株価更新()
    Dim http As Object
    Dim sh_control As Worksheet
    Dim st_url As String
    Dim st_code As String
    Dim i_check_row As Integer
    Dim i_max_row As Integer
    Dim i_code_column As Integer
    Dim i_kabuka_column As Integer
    Dim i_haito_column As Integer
    Dim i_pbr_column As Integer
    Dim i_per_column As Integer
    Dim st_search_value As String
    Dim reg_exp As RegExp
    Dim mc As MatchCollection
   
    ' ----------------------------------------
    ' [設定値] ★エクセルシートの内容に合わせてここを変更(A列=1)
    i_code_column = 3               ' 株価コードの列
    i_kabuka_column = 5             ' 現在株価の列
    i_haito_column = 8              ' 1株配当の列
    i_pbr_column = 15               ' PBRの列
    i_per_column = 16               ' PERの列
    i_max_row = 10000               ' 株価のチェックはこの行まで
    ' ----------------------------------------
   
    Set sh_control = ActiveSheet                    ' アクティブシートの設定
    Set reg_exp = CreateObject("VBScript.RegExp")   ' 正規表現オブジェクト生成
    Set http = CreateObject("MSXML2.XMLHTTP")       ' HTTPオブジェクト生成
   
    i_check_row = 1
    Do While i_check_row < i_max_row
        ' コード取得してURL設定
        st_code = sh_control.Cells(i_check_row, i_code_column)
       
        ' 対象外行(コード以外)についてはスキップする
        If Not IsNumeric(st_code) Then GoTo Continue
       
        If Len(st_code) <> 8 Then
            '国内株式のULR設定
            st_url = "http://stocks.finance.yahoo.co.jp/stocks/detail/?code=" & st_code & ".T"
        Else
            '投資信託のULR設定
            st_url = "http://stocks.finance.yahoo.co.jp/stocks/detail/?code=" & st_code
        End If
        
        ' HTMLデータを取得
        http.Open "GET", st_url, False
        http.setRequestHeader "If-Modified-Since", "Thu, 01 Jun 1970 00:00:00 GMT"
        http.Send
       
        If Len(st_code) <> 8 Then ' 国内株式
            ' [株価]
            ' 正規表現で文字列を抽出1
            reg_exp.Pattern = "stoksPrice"">.*</td>"
            Set mc = reg_exp.Execute(http.responseText)
            If mc.Count > 0 Then
                st_search_value = mc.Item(0)
                ' 正規表現で文字列を抽出2
                reg_exp.Pattern = "[0-9]+,?[0-9]+"
                Set mc = reg_exp.Execute(st_search_value)
                If mc.Count > 0 Then
                    ' 抽出した株価をエクセルシートへ反映
                    sh_control.Cells(i_check_row, i_kabuka_column) = CDbl(mc.Item(0))
                End If
            End If
            ' [配当]
            ' 正規表現で文字列を抽出1
            reg_exp.Pattern = "dps_2.*</a>"
            Set mc = reg_exp.Execute(http.responseText)
            If mc.Count > 0 Then
                st_search_value = mc.Item(0)
                ' 正規表現で文字列を抽出2
                reg_exp.Pattern = ">.*</a>"
                Set mc = reg_exp.Execute(st_search_value)
                If mc.Count > 0 Then
                    st_search_value = mc.Item(0)
                    ' 正規表現で文字列を抽出3
                    reg_exp.Pattern = "[0-9]+\.?[0-9]+"
                    Set mc = reg_exp.Execute(st_search_value)
                    If mc.Count > 0 Then
                        ' 抽出した配当をエクセルシートへ反映
                        sh_control.Cells(i_check_row, i_haito_column) = CDbl(mc.Item(0))
                    End If
                End If
            End If
            ' [PBR]
            ' 正規表現で文字列を抽出1
            reg_exp.Pattern = "<strong>.*\n.*PBR"
            Set mc = reg_exp.Execute(http.responseText)
            If mc.Count > 0 Then
                st_search_value = mc.Item(0)
                ' 正規表現で文字列を抽出2
                reg_exp.Pattern = "[0-9]+\.?[0-9]+"
                Set mc = reg_exp.Execute(st_search_value)
                If mc.Count > 0 Then
                    ' 抽出したPBRをエクセルシートへ反映
                    sh_control.Cells(i_check_row, i_pbr_column) = CDbl(mc.Item(0))
                End If
            End If
            ' [PER]
            ' 正規表現で文字列を抽出1
            reg_exp.Pattern = "<strong>.*\n.*PER"
            Set mc = reg_exp.Execute(http.responseText)
            If mc.Count > 0 Then
                st_search_value = mc.Item(0)
                ' 正規表現で文字列を抽出2
                reg_exp.Pattern = "[0-9]+\.?[0-9]+"
                Set mc = reg_exp.Execute(st_search_value)
                If mc.Count > 0 Then
                    ' 抽出したPBRをエクセルシートへ反映
                    sh_control.Cells(i_check_row, i_per_column) = CDbl(mc.Item(0))
                End If
            End If
        Else ' 投資信託
            ' [株価]
            ' 正規表現で文字列を抽出1
            reg_exp.Pattern = "stoksPrice"">.*</td>"
            Set mc = reg_exp.Execute(http.responseText)
            If mc.Count > 0 Then
                st_search_value = mc.Item(0)
                ' 正規表現で文字列を抽出2
                reg_exp.Pattern = "[0-9]+,?[0-9]+"
                Set mc = reg_exp.Execute(st_search_value)
                If mc.Count > 0 Then
                    ' 抽出した株価をエクセルシートへ反映
                    sh_control.Cells(i_check_row, i_kabuka_column) = CDbl(mc.Item(0))
                End If
            End If
        End If
Continue:
        i_check_row = i_check_row + 1
    Loop
End Sub

ヤフーファイナンスから該当銘柄ページのHTMLデータを取得して、正規表現で株価やPBRの文字列を抜き出している感じです。正規表現をあまりよく理解しておらず、かなり強引な方法で行っているので、もっと効率的な方法はあるんでしょうけど、とりあえず動作しているからOKとしようかな。。以下、作成メモです。もし、興味のある方がいらっしゃったらどうぞ♪こんな適当なソースコード、誰も興味ないですかね^^

 ◆株価取得エクセルの作成方法
[環境]
Office Excel2013

[手順]
1.開発タブの表示
・[ファイル] - [オプション] - [リボンのユーザ設定]で、右側の「開発」にチェックを入れる。

2.参照設定(正規表現)を追加する。
・[Alt] + F11キーを押下して、VBAの画面を表示する。
・[ツール] - [参照設定]で、「Microsoft VBScript Regular Expressions 5.5」にチェックを付ける。
・VBAの画面を閉じる。

3.株価更新ボタンの作成
・[開発タブ] - [挿入]でボタンを選択して、シート上にボタンを配置
・[マクロの登録]ウィンドウが表示されるので、任意のマクロ名(サンプルでは、"Click_株価更新")を設定して、[新規作成]を選択。
・VBAの画面が表示されるので、上記のソースコードをコピー。
・VBAの画面を閉じる。

上記で完成です。
エクセルシートのC列に、株価コードを入れて、手順3で追加したボタンを押下すると、
株価、1株配当、PBR、PERを自動で取得します。

[備考]
株価コードや株価などの位置(列)は、上記ソースコードの[設定値]の部分を修正することで変更可能です。