今日は盤屋から少し離れたお話をしようと思います。
皆さん金融資産をお持ちですか?私は日本の企業の株を現物で少しですが運用しています。
少し前までエクセルでWebから株価などを取得するプログラムを作り、週末に一週間の資産の状態を印刷などをして管理していました。
しかし、取得していたWebサイトがスクレイピングが禁止であることを知らずにやってしまっていました。
そこで今はPythonというプログラミング言語を使ってyfinanceという無料のAPIデータから「銘柄名」「株価」「配当利回り」「日経平均株価」を取得してエクセル上のシートに書き込み管理しています。
先日そのことを知人にお話ししたところ、他にも資産管理をエクセルなどで行ういい方法がないか相談されたので考えてみることにしました。
今日はそのお話です。
株価のWebスクレイピングは禁止されている

まずはWebスクレイピングはしない方向で考えます。
Yahoo!ファイナンスやミンカブなどはWebスクレイピングを禁止しています。
GoogleファイナンスもGoogleがスクレイピングを禁止しているので、やはりシステムに過度の負担になるスクレイピングは基本的にどのサイトも禁止しているようです。
有料サイトの場合はYahooの「VIP倶楽部」で時系列データを使えたり、楽天証券を使っている方は「楽天RSS」というエクセルに情報を取得できるサービスがあるようです。
またWindowsにPowerAutomateというソフトがあり、それならゆっくりデータを抽出するのでシステムの負担が軽いのではと考えましたが、結局それもWebスクレイピングになるので諦めました。
そこで私が目を付けたのがyfinanceというAPIデータです。
yfinanceとはアメリカYahoo!の株価情報ですが、公式APIではないのでいつ仕様変更で使えなくなるか分からないとされています。

無料で株価を取得するのはなかなか難しいものですね。
他にも海外のサイトに登録したりしてみましたが、ほとんどが日本の株価に対応していないか日経平均株価しか取得できませんでした。
エクセルにPythonでyfinance

結局私はエクセルにPythonを使ってyfinanceから株価を取得する方法をとりました。
WindowsではPythonを使うことができないのでPythonをインストールして使っています。
手順は以下の通りです
- 公式サイトでPythonをインストール
- コマンドプロントでyfinanceのインストール
- コマンドプロンプトでopenpyxlのインストール(Pythonでエクセルを操作用)
- コマンドプロンプトでpywin32のインストール(Pythonでエクセルの編集用)
- PythonのパスとスクリプトをWindowsの環境変数に登録
- Pythonのプログラムをメモ帳で作って拡張子を変えてPythonに変更
- 完成!
こんな感じでPythonを起動すると自動で銘柄コードが入力してあるエクセルが立ち上がり、銘柄名(銘柄名は英語表記)と株価と配当利回りが取得できるように作っています。
Pythonのプログラムについてはまた別記事でお話ししようと思います。
GoogleスプレッドシートにPythonでyfinance

Googleスプレッドシートとは
GoogleスプレッドシートとはGoogle版のエクセルのようなもので、Googleアカウントがあれば無料で使える優れものです。
エクセルのデータを開くこともでき、私のようなライトユーザーにはエクセルとほとんど変わらない感じで使えます。
Webブラウザで編集して、データの保存もパソコンにではなくクラウド上に保存します。
クラウドに保存しているのでGoogleにログインしていればiphoneでも開いたり操作できるので大変便利だと思います。
Googleスプレッドシートでエクセルを開いてもマクロは使えませんが、AppsScriptという拡張機能でマクロのような機能も使えます。
ただGoogleFinance関数という株価を取得する関数がありますが、日本株は対応していないのが残念です。
Googleスプレッドシートにyfinance
Googleスプレッドシートでyfinanceを使うにはGoogleColabでPythonのプログラムを作ってGoogleドライブにColabをマウントしなければいけません。
手順は以下の通りです
- GoogleColabを開く
- !pip installを使ってgspread(Googleスプレッドシートを操作用)google-auth(Google API への認証用)をインストール
- GoogleドライブをColabにマウント
- yfinanceをインストール
- import os をインストール(Pythonの関連の機能用)
- Google Drive 内の json のパスを指定
- Google Drive API にアクセス認証をする
- Google Sheets API に接続
- Googleスプレッドシートに株価を取得するプログラムを作成
- 完成!

Googleスプレッドシートで株価を取得するものを作ることはできたのですがGoogleColabをGoogleドライブに連動したりするのがとてもややこしくてよく分からないうちに完成した感じです。
チャットGPTに教えてもらいながら、なんとか完成した感じです。
AppleのNumbersでStock関数

Numbersとは
NumbersとはAppleのエクセルのようなアプリです。これもAppleIDがあれば誰でも使うことができます。
Macやipadで主に使うアプリなのでWindowsでも使えますが、機能が制限されてしまいます。
私はMacもipadも持っていないのでWindowsで製作してみました。
エクセルとは少し違って同じシートに複数の表を作ったりと、エクセルより便利だなと思う機能もありますが、操作が慣れていないととても難しいです。
エクセルのデータを開くこともできますが、WindowsのEdgeでブラウザで開くとなぜか「翻訳しますか?」と出るので翻訳すると文字化けしてしまいました。Windowsで使う場合は翻訳はしないことをお勧めします。
そしてこのNumbersの魅力はSTOCK関数という日本の株価も取得することができる関数が用意されていることです!!
取得できるデータは「銘柄名(英語表記)」「前日株価」「配当利回り」「1株配当」など他にも数種類が取得できます。
ただ取得できるデータは前日の終値になるのと、日経平均株価が取得できないのがとても残念です。
ただ週末にデータを管理するだけだと考えると、無料で一番簡単に資産管理できる唯一の方法かもしれません。
STOCK関数
STOCK関数の使い方はとても簡単です。簡単なので実際にコードを書いてみます。
セル「A0」に手入力した証券コードの銘柄名(英語表記)を「B0」、前日株価を「C0」、配当利回りを「D0」、1株配当を「E0」に取得します。
- セル「B0」に =STOCK(A0&”.T”,1)
- セル「C0」に =STOCK(A0&”.T”,0)
- セル「D0」に =STOCK(A0&”.T”,9)
- セル「E0」に =STOCK(A0&”.T”,20)
“.T”というのは日本の株価の場合は証券コードの後に T をつけないといけないので入れています。
これで「銘柄名(英語表記)」「前日株価」「配当利回り」「1株配当」を取得できると思います。
最後の数字で取得できるデータが変わるのでいろいろ試してみてください。
まとめ
今回いろいろ試しましたが、一番簡単な順番は以下になりました。
- AppleのNumbers
- エクセルでPythonを使ってyfinance
- GoogleスプレッドシートでPythonを使ってyfinance
一番簡単に株価を取得できるのはAppleのNumbersになりました。
ただWindowsユーザーには少し使いにくいかもしれません。
皆さんの資産管理の参考になれば幸いです。
最後に、このブログを書いている人

小さな盤屋を一人で細々と営みながら一人でゆる~くロードバイクを楽しんでいます。
一人ぼっちでロードバイクを始めても楽しめることを皆さんに伝えるためにこのブログをやっています!
就職氷河期世代ですが、なんとか設備メーカーに就職し、いろいろありまして5年ほど前から一人で頑張っています。
このブログが皆さんのお役に立てれば幸いです!!