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 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 = 2020 To 2040:
        For month = 1 To 12:
            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 hour = 0 To 23:
        For minute = 0 To 59:
            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ファイナンスのポートフォリオのページを開く

Y!ファイナンス - 株価やニュース、企業情報などを配信する投資・マネーの総合サイト
Y!ファイナンスは、投資やマネーの総合情報サイトです。株価やIPO、株主優待など日本株情報のほか、外国為替やFX、投資信託や米国株、ニュース、企業情報などを掲載しています。

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

  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ドライブでしのいでいることが原因かもしれませんが、もし可能でしたら、この問題の解決方法を教えていただけないでしょうか。

タイトルとURLをコピーしました