2022年9月12日以降のYahooファイナンスの新UIのポートフォリオをExcelシートに貼り付けるときに使えるマクロを作ったので紹介する
↓Googleスプレッドシート派の人はこっち
はじめに
2022年9月12日にYahooファイナンスのポートフォリオのUIが変更になった
ポートフォリオページリニューアル、および一部機能終了のお知らせ(パソコン版・スマートフォンweb版) - Yahoo!ファイナンス
Yahoo!ファイナンスからのお知らせや使い方のコツなどをご紹介
旧UIでは、Webページをドラッグで選択してコピペするだけでいい感じのExcelシートが作れたが、新UIではそれができなくなった
この改悪に対抗するためのエクセルマクロを作成したので紹介する
最終的にはこんなものができる
↓元ネタはこれ
【超実践的】高配当株ポートフォリオを「安定的」に運用するためのメンテナンス方法 - こびと株.com
こんな悩みにお答えします。 この記事を読めば、実践的な高配当株投資のやり方がイメージできるかなと思います。 ※この記事は、かなりボリュームがあります(約8,700文字)。 すでに...
それではいってみよう
ソースコード全文
今回作成したマクロはこれ
YahooFinance.xlsm
1 ファイル 53.61 KB
ソースコード全文はこれ
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!ファイナンス - 株価・最新ニュース
リアルタイム株価、最新ニュース、株式掲示板などを提供する、投資やマネーの総合情報サイトです。株価指数、外国為替相場、日本株、米国株など、投資判断に役立つ情報を掲載しています。
表示設定を以下のように設定する
- コード・市場・名称
- 業種
- 保有数
- 購入価格
- 時価
- 損益
- EPS
- 1株配当
- 配当利回り
- PER
- PBR
表の外側(「削除」の左)からまっすぐ右にドラッグして表全体を選択し,「Ctrl+C」でコピーする
Excelファイルの「Yahooファイナンス」のシートのA1セルを選択し、「Ctrl+V」で貼り付ける
※貼り付けたときに下の画像のような状態になってしまうときは、「削除」の左の表の外側からドラッグを開始できていない
うまく貼り付けできたら、「Alt+F8」でマクロ実行のウィンドウを開く
「YahooFinanceExport」のマクロを実行する
集計のシートにいい感じの表が作成される
以上
おわりに
2022年9月12日以降のYahooファイナンスの新UIのポートフォリオをExcelシートに貼り付けるときに使えるマクロを作ったので紹介した
ちなみに今回例として使ったポートフォリオはこの本に載っていた
リンク
むちゃくちゃ分かりやすくて面白かった
↓関連記事
コメント
はじめまして。有益な情報を教えていただきありがとうございます。このページを参考にトライしてみたのですが、うまくいかない部分がありコメントさせていただきます。
具体的には、コピーした際にyahooファイナンスで改行で表示されている部分、たとえばコード・市場・名称など一行に表示されてしまい、管理人様のように項目ごとに行をわけて貼り付けることができません。エクセルをもっておらずgoogleドライブでしのいでいることが原因かもしれませんが、もし可能でしたら、この問題の解決方法を教えていただけないでしょうか。
はじめまして。コメントありがとうございます。
スプレッドシート派の方向けの記事を作成しましたのでそちらをご覧ください。
https://mtkbirdman.com/yahoo-finance-portforio-export-to-google-spreadsheet
エクセルで手直しするのめちゃくちゃ大変だったので本当に助かります。
ありがたく使わせていただきます。
コメントありがとうございます!
お役に立てたようで何よりです。
Yahooファイナンスのポートフォリオ情報をどのようにExcelに持ってくるかを考えてた時に偶然見つけましたので、ありがたく使用させて頂きます。
Yahooファイナンスから情報は貼り付けできましたが、マクロエラーが発生してしまいます。
こちらの操作が悪いかもしれれませんが解決方法をご教授いただけますと幸いです。
エラーとはしては下記です。
↓
実行時エラー’1004′
アプリケーション定義またはオブジェクト定義のエラーです。
デバッグボタン押すと11行目のSelectionから始まる部分で止まっているようです。(Excel上は配当利回りの列のよです)
コメントいただきありがとうございます!
配当利回りの行のマクロを見直しました.いかがでしょうか?
こちらではエラーが確認できなかったので,もしかしたらExcelのバージョンなどの問題かもしれません.
ご対応ありがとうございます。
再度試してみましたが同じマクロエラーで動作しませんでした。
使用しているExcelのバージョンは「Microsoft Office Professional Plus 2019」となります。
マクロが正常に動きましたのでご報告いたします。
色々調べていたところ、「FormulaVersion:=xlReplaceFormula2」がマクロに含まれておりますと、私の使用しているExcelバージョン(ver 2019)では動作しないようです。(海外掲示板含めて調べましたが癖のある関数?のようです)
マクロ無いから全て削除したところ動作しました。
また、修正前のファイルと修正後のファイルのどちらでもマクロから「FormulaVersion:=xlReplaceFormula2」を削除したところ動作しました。
マクロ修正頂いたのに申し訳ございません。
年月と時刻の処理ですが、ワイルドカードを使って
年月 ????/?? を削除、時刻 ??:?? を削除、としてもできそうな気がします