PR

Yahooファイナンスのポートフォリオをエクセルに出力するためのマクロ

2022年9月12日以降のYahooファイナンスの新UIのポートフォリオをExcelシートに貼り付けるときに使えるマクロを作ったので紹介する

↓Googleスプレッドシート派の人はこっち

スポンサーリンク

はじめに

2022年9月12日にYahooファイナンスのポートフォリオのUIが変更になった

ポートフォリオページリニューアル、および一部機能終了のお知らせ(パソコン版・スマートフォンweb版) - Yahoo!ファイナンス
Yahoo!ファイナンスからのお知らせや使い方のコツなどをご紹介

旧UIでは、Webページをドラッグで選択してコピペするだけでいい感じのExcelシートが作れたが、新UIではそれができなくなった

この改悪に対抗するためのエクセルマクロを作成したので紹介する

最終的にはこんなものができる

↓元ネタはこれ

【超実践的】高配当株ポートフォリオを「安定的」に運用するためのメンテナンス方法 - こびと株.com
こんな悩みにお答えします。     この記事を読めば、実践的な高配当株投資のやり方がイメージできるかなと思います。   ※この記事は、かなりボリュームがあります(約8,700文字)。 すでに...

それではいってみよう

ソースコード全文

今回作成したマクロはこれ

ソースコード全文はこれ

Sub YahooFinanceExport()
    Dim year, month, day As Integer
    Dim hour, minute As Integer
    Dim str As String
    
    Cells.Select
    Selection.UnMerge
    Cells.EntireColumn.AutoFit
    Columns("K:K").Select
    Selection.NumberFormatLocal = "0.0000_ "
    Selection.Replace What:="------%", Replacement:="---", LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False, FormulaVersion:=xlReplaceFormula2
    Range("A1").Select
    
    Cells.Replace What:="倍", Replacement:="", LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False, FormulaVersion:=xlReplaceFormula2
    Cells.Replace What:="(連)", Replacement:="", LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False, FormulaVersion:=xlReplaceFormula2
    Cells.Replace What:="(単)", Replacement:="", LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False, FormulaVersion:=xlReplaceFormula2
    Cells.Replace What:="------", Replacement:="0", LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False, FormulaVersion:=xlReplaceFormula2
    Cells.Replace What:="---%---", Replacement:="0", LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False, FormulaVersion:=xlReplaceFormula2
    Cells.Replace What:="------%", Replacement:="0", LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False, FormulaVersion:=xlReplaceFormula2
    For year = 2040 To 2020 Step -1:
        For month = 12 To 1 Step -1:
            str = Format(year, "####") & "/" & Format(month, "00")
            Cells.Replace What:=str, Replacement:="", LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False, FormulaVersion:=xlReplaceFormula2
        Next month
    Next year
    For month = 12 To 1 Step -1:
        For day = 31 To 1 Step -1:
            str = Format(month, "##") & "/" & Format(day, "##")
            Cells.Replace What:=str, Replacement:="", LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False, FormulaVersion:=xlReplaceFormula2
        Next day
    Next month
    For hour = 23 To 0 Step -1:
        For minute = 59 To 0 Step -1:
            str = Format(hour, "00") & ":" & Format(minute, "00")
            Cells.Replace What:=str, Replacement:="", LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False, FormulaVersion:=xlReplaceFormula2
        Next minute
    Next hour
    
End Sub

基本的にはExcelの置換機能をマクロで記録しただけである

使い方を説明する

使い方

Yahooファイナンスのポートフォリオのページを開く

Yahoo!ファイナンス - 株価・最新ニュース
リアルタイム株価、最新ニュース、株式掲示板などを提供する、投資やマネーの総合情報サイトです。株価指数、外国為替相場、日本株、米国株など、投資判断に役立つ情報を掲載しています。

表示設定を以下のように設定する

  1. コード・市場・名称
  2. 業種
  3. 保有数
  4. 購入価格
  5. 時価
  6. 損益
  7. EPS
  8. 1株配当
  9. 配当利回り
  10. PER
  11. PBR

表の外側(「削除」の左)からまっすぐ右にドラッグして表全体を選択し,「Ctrl+C」でコピーする

Excelファイルの「Yahooファイナンス」のシートのA1セルを選択し、「Ctrl+V」で貼り付ける

※貼り付けたときに下の画像のような状態になってしまうときは、「削除」の左の表の外側からドラッグを開始できていない

うまく貼り付けできたら、「Alt+F8」でマクロ実行のウィンドウを開く

「YahooFinanceExport」のマクロを実行する

集計のシートにいい感じの表が作成される

以上

おわりに

2022年9月12日以降のYahooファイナンスの新UIのポートフォリオをExcelシートに貼り付けるときに使えるマクロを作ったので紹介した

ちなみに今回例として使ったポートフォリオはこの本に載っていた

むちゃくちゃ分かりやすくて面白かった

↓関連記事

コメント

  1. よこ より:

    はじめまして。有益な情報を教えていただきありがとうございます。このページを参考にトライしてみたのですが、うまくいかない部分がありコメントさせていただきます。
    具体的には、コピーした際にyahooファイナンスで改行で表示されている部分、たとえばコード・市場・名称など一行に表示されてしまい、管理人様のように項目ごとに行をわけて貼り付けることができません。エクセルをもっておらずgoogleドライブでしのいでいることが原因かもしれませんが、もし可能でしたら、この問題の解決方法を教えていただけないでしょうか。

  2. 匿名 より:

    エクセルで手直しするのめちゃくちゃ大変だったので本当に助かります。
    ありがたく使わせていただきます。

  3. rino より:

    Yahooファイナンスのポートフォリオ情報をどのようにExcelに持ってくるかを考えてた時に偶然見つけましたので、ありがたく使用させて頂きます。

    Yahooファイナンスから情報は貼り付けできましたが、マクロエラーが発生してしまいます。
    こちらの操作が悪いかもしれれませんが解決方法をご教授いただけますと幸いです。
    エラーとはしては下記です。

    実行時エラー’1004′
    アプリケーション定義またはオブジェクト定義のエラーです。

    デバッグボタン押すと11行目のSelectionから始まる部分で止まっているようです。(Excel上は配当利回りの列のよです)

    • @mtk_birdman @mtk_birdman より:

      コメントいただきありがとうございます!
      配当利回りの行のマクロを見直しました.いかがでしょうか?

      こちらではエラーが確認できなかったので,もしかしたらExcelのバージョンなどの問題かもしれません.

      • rino より:

        ご対応ありがとうございます。
        再度試してみましたが同じマクロエラーで動作しませんでした。
        使用しているExcelのバージョンは「Microsoft Office Professional Plus 2019」となります。

      • rino より:

        マクロが正常に動きましたのでご報告いたします。
        色々調べていたところ、「FormulaVersion:=xlReplaceFormula2」がマクロに含まれておりますと、私の使用しているExcelバージョン(ver 2019)では動作しないようです。(海外掲示板含めて調べましたが癖のある関数?のようです)
        マクロ無いから全て削除したところ動作しました。

        また、修正前のファイルと修正後のファイルのどちらでもマクロから「FormulaVersion:=xlReplaceFormula2」を削除したところ動作しました。
        マクロ修正頂いたのに申し訳ございません。

  4. 匿名 より:

    年月と時刻の処理ですが、ワイルドカードを使って
    年月 ????/?? を削除、時刻 ??:?? を削除、としてもできそうな気がします