エクセルで株価を自動取得する方法を初心者向けに解説。STOCKHISTORY関数、Googleスプレッドシート、Python、Webスクレイピングツールを使って日本株・米国株の株価データを自動更新する手順を紹介します。
「STOCKHISTORY関数を試したら、日本株のコードを入れても#N/A…」「エクセルで毎朝の株価チェックを自動化したいのに、どの方法が自分に合うか分からない」——そう感じてこの記事に来た方へ、まず結論からお伝えします。エクセルで株価を自動取得する方法は、対象が米国株か日本株かで最初に分岐します。米国株や為替がメインなら、エクセル標準の「株価データ型」や「STOCKHISTORY関数」で今日からノーコードで自動化できます。一方、日本株(東証銘柄)をリアルタイムに近い形で自動取得したい場合、エクセル単体の標準機能では対応しておらず、Googleスプレッドシート(GAS)、Python、または専門のスクレイピングツールのいずれかを組み合わせる必要があります。
この記事では、 エクセルでの株価自動取得 を「コストがかからない方法」から「プログラミング知識がなくても日本株にきちんと対応できる方法」まで4つに分けて、操作手順・メリット・デメリットを実例つきで比較します。あなたが「個人投資家でコストをかけずに日本株を追いたい」のか、「業務で複数銘柄を毎日自動収集したい」のかによって最適解は変わるため、最後まで読めば自分に合った方法と、すぐに試せる手順が分かるようになっています。
株価の自動取得が必要とされる最大の理由は、手動転記によるミスと時間コストの両方を排除できる点にある。複数銘柄のポートフォリオを管理している場合、毎日の終値・始値・出来高をブラウザから一つずつコピーしてエクセルに貼り付ける作業は、銘柄数が10、20と増えるほど現実的ではなくなる。
さらに、自動取得には単純な時短以上のメリットがある。
ただし、ここで重要な前提がある。「自動取得」と一括りにされる方法の中には、対象市場(米国株/日本株)、更新頻度(リアルタイムか20分遅延か)、必要なスキル(関数のみで済むかプログラミングが必要か)が大きく異なるものが混在している。次では、目的別にどの方法を選ぶべきかを詳しく解説します。
結論を先に言えば、「対象が米国株か日本株か」「リアルタイム性が必要か」の2点で、適した方法はほぼ決まる。以下では、エクセル標準機能である「株価データ型」「STOCKHISTORY関数」「Power Query」、そして拡張機能である「VBA/API連携」の4つの基本的な選択肢を、それぞれの対応範囲とともに整理する。
エクセルの「データ型(株式)」は、セルに銘柄名やティッカーを入力し、データタブの「株価」をクリックするだけで企業情報に変換される機能だ。変換後はアイコンをクリックして「現在値」「変化率」「PER」などの項目を別セルに展開できる。
米国株(NYSE・NASDAQ上場銘柄)であれば、ティッカーシンボル(例:”AAPL”)を入力するだけで認識される。この機能で取得される企業情報や株価データは、LSEG Data & Analyticsという別会社から提供されている。つまりMicrosoft自身が作っているデータではなく、外部の金融データプロバイダーと連携した機能であるという点は、データの信頼性を判断する上で覚えておきたい。
ただし日本株については対応が不安定で、銘柄名を直接入力しても認識されないケースが多く、後述するSTOCKHISTORY関数と同様の制約を抱えている。
「STOCKHISTORY関数を使えば日本株も取れるのでは?」と考える方が多いが、結論は「現時点では非対応」だ。STOCKHISTORY関数でデータが取得できない、あるいは更新が極端に遅れるという報告が一部のユーザーから上がっており、Microsoft側のデータプロバイダーとの連携トラブルが主な原因とされている。
さらに根本的な制約として、構文と対応範囲は次のとおりだ。
“.T”を付けて入力する書き方自体は知られているものの、東証株のヒストリカルデータが安定して返ってくるかは別問題であり、実際に日本株専門の解説記事でも「STOCKHISTORY関数は東京証券取引所には対応していない」と明記され、日本株を管理したい場合はGoogleスプレッドシートのGOOGLEFINANCE関数を検討するよう案内されている。この一点こそが、本記事で日本株対応の方法(GAS・Python・専門ツール)を後半で詳しく扱う理由である。
なお、データの即時性についても誤解されやすい点がある。STOCKHISTORY関数はリアルタイムではなく、市場ごとに15〜20分程度の遅延がある。デイトレードの判断材料としては不向きで、月次レポートや日次の傾向確認に向いた関数だと理解しておくとよい。
Power Queryは、Webページやファイルから柔軟にデータを取り込める機能で、株価データ型やSTOCKHISTORY関数が対応していない情報源にも応用できる点が強みだ。データタブの「データの取得」からWebを選択し、Power Queryエディターで不要な列や行を整理した上でシートに読み込む、という流れで使用する。
応用範囲が広い一方で、対象サイトのHTML構造を自分で読み解いてクエリを組む必要があり、サイトのレイアウトが変わるとクエリが崩れる保守コストも発生する。プログラミングは不要だが、「データ構造を理解する」ある程度のITリテラシーは求められる中級者向けの方法だ。
最も自由度が高いのがVBA(マクロ)やAPI連携だ。エクセルVBAを使って自動で株価を取得するプログラムを組めば、銘柄コードと保有数を入力し、更新ボタンを押すだけで最新株価やPER、PBR、配当を一括取得できるような仕組みも作れる。
ただし、VBAでWebサイトをスクレイピングする場合、VBAからHTTPリクエストを送信してウェブページのHTMLソースを取得し、必要な数値だけを抽出する手法が一般的で、XMLHTTPライブラリを使えばブラウザを起動せず高速にデータを取得できる一方、動的なコンテンツを含むサイトではSeleniumなどのブラウザ操作自動化ツールを組み合わせる必要がある。さらに対象サイトがリニューアルされると取得できなくなるリスクが常にあり、IE関連のサポート終了に伴いEdgeをVBAから操作する設定(Selenium、WebDriver、.NET Frameworkの追加インストール)が必要になるなど、運用の手間が年々増している。VBAは「学習コストをかけてでも自社専用の仕組みを作りたい」企業向けの選択肢と言える。
ここまでの内容を踏まえると、「エクセルで株価を自動取得する方法」への最短の答えは次の通りだ。米国株中心なら「データ型」または「STOCKHISTORY関数」、日本株を含む場合はエクセル単体では不十分なため、外部ツールとの連携が必要になる。
具体的な操作のミニマム手順は以下のとおり。
この手順は3〜5分で完了するほど簡単だが、前章で見たとおり日本株には適用できないという大きな制約がある。「自分の対象銘柄が日本株かどうか」を最初に確認した上で次に進むことが、この記事全体で最も重要な分岐点になる。
日本株をリアルタイムに自動取得したい場合、現実的な選択肢は「スプレッドシート(GAS)」「Python」「 専門的なスクレイピングツール 」「専門業者への依頼」の4つに絞られる。それぞれ必要なスキル・コスト・保守性が大きく異なるため、順に具体的な操作手順とともに見ていく。
Googleスプレッドシート には日本株にも対応した「GOOGLEFINANCE関数」があり、Google Apps Script(GAS)と組み合わせることで、抽出したデータをエクセル形式で保存・活用できる。この方法は米国株だけでなく国内株の情報も取得できる点が魅力だが、株価を公開しているWEBサイトの中にはスクレイピングを禁止しているものもあるため、必ず対象サイトのrobots.txtを確認する必要がある。
操作手順(例:トヨタ自動車[7203]の株価をGoogleファイナンス経由で取得する場合)
【2026年最新】PythonでSeleniumを使ってスクレイピングする方法
プログラミング経験がある場合、Pythonは最も柔軟で拡張性の高い選択肢になる。yfinanceは、Yahoo! Financeからデータを取得するオープンソースのPythonライブラリで、インストールも利用も完全無料、世界中の株式市場(日本株含む)のデータに対応している。APIキーの登録すら不要で、数行のコードで株価取得を始められるため、初めて株価のAPIに触れる方にも扱いやすい。
操作手順(例:トヨタ自動車の株価をyfinanceで取得する場合)
ただし、yfinanceには15分程度のディレイがある点に注意が必要で、より本格的に日本株を扱う場合はJPX(日本取引所グループ)公式のJ-Quants APIへの移行も検討材料になる。Pythonは自由度が非常に高い反面、環境構築・エラー対応・スクリプトの保守をすべて自分で行う必要がある点は他の方法と大きく異なる。
PythonでWebスクレイピングする入門ガイド【サンプルコードあり】
プログラミングをしたくない、またはVBA・Pythonの保守コストを避けたい場合、 Octoparse のようなノーコードのスクレイピングツールが選択肢になる。GASやPythonと違い、Webページの構造をクリック操作だけで認識させ、コードを書かずに定期実行まで設定できる点が最大の違いだ。
Octoparseでは Yahoo Japan ファイナンス 向けの専門テンプレートも用意されているので、ぜひお試しください
https://www.octoparse.jp/template/yahoo-finance-scraper-for-japan
さらに、最新の MCP(Model Context Protocol)連携機能 により、ChatGPT、Claude、CursorといったAIアシスタントから直接リアルタイムのWebデータを取得するようになりました。チャット画面を離れることなく、抽出した構造化データをそのまま分析やレポート作成に活用できるため、情報収集の効率は劇的に向上します。
操作手順(例:Yahoo!ファイナンスのトヨタ自動車[7203]個別銘柄ページから株価を取得する場合)
複数銘柄をまとめて自動化したい場合は、すでに用意されているYahoo Finance Scraperテンプレートを使うとさらに早い。このテンプレートでは銘柄コードを入力するだけで、株価・出来高などの主要項目をワンクリックで取得できるよう事前に設計されている。
競合情報も営業リストも、ウェブデータをそのままExcel・CSV・Google Sheetsに出力
コード不要、誰でも今日から。クリック操作だけで必要な項目を自動抽出
Google Maps・食べログ・iタウンページ向けテンプレートで、リード獲得をすぐに開始
クラウドで毎日・毎週自動実行。大量取得でも安定して、競合動向を常に把握
MCP対応でAIエージェントと連携。収集データをAIに渡して分析・活用まで一気通貫
クレジットカード不要で無料スタート。世界600万人以上が選んだ信頼のツール
社内システムへの本格的な組み込みや、大量銘柄のリアルタイム監視が必要な場合は、専門業者に依頼してシステムを構築する方法もある。証券会社や日本取引所グループ(JPX)などが提供する正式なAPIを活用し、システムを構築する方法が最も信頼性に優れているとされる一方で、コストは月額数万円から数十万円規模になることが一般的で、個人投資家にはハードルが高い選択肢だ。
社内に開発リソースがある中〜大規模企業や、コンプライアンス要件が厳しい金融機関には適しているが、本記事の主な読者層(個人投資家・中小企業の業務効率化)にとっては、次の部分で比較する4つの方法のいずれかで十分なケースが多い。
4つの方法を、個人投資家・業務担当者が実際に気にする9つの軸で比較する。結論を先に言うと、コストを最優先するなら「GAS」、保守の手間を最小化したいなら「専門ツール(Octoparse等)」、本格的な分析基盤を社内に作るなら「Python」または「専門業者」が向いている。
どの方法を選んでも、共通して押さえておくべき注意点が3つある。
対象サイトのドメインの末尾に「/robots.txt」を付けてアクセスすれば、クローラーへの許可・禁止指示を確認でき、「Disallow:」で指定されたパスはスクレイピングを避けることが推奨される。インターネット上で公開されている情報であっても、文章や図表には著作権が認められることがあり、誰でも閲覧できるという理由だけで自由に取得・加工・事業利用できるとは限らない点は、特に商用利用を検討している場合に重要だ。
日本の著作権法上は第30条の4により情報解析目的の複製が一定の条件下で許容されているが、著作権者の利益を不当に害しない範囲に限定されるため、個人の投資判断のための取得であれば一般的にリスクは低いが、データを再配布・販売する場合は事前に確認が必要だ。Octoparseのrobots.txt確認方法については、robots.txtの確認方法を解説した記事でも詳しく紹介されている。
2010年に発生した岡崎市立中央図書館事件では、1秒に1回程度のアクセスを行った男性が逮捕(後に起訴猶予)され、問題とされたのは「不正アクセス」ではなく業務妨害だった点は重要な教訓だ。短時間に大量のリクエストを送ると対象サイトのサーバーに過度な負荷をかけてしまうため、リクエストの間隔は最低でも1秒以上空けることが推奨される。GAS・Python・専門ツールいずれの方法でも、この原則は共通して守るべきマナーだ。
本記事で紹介した方法の多くは15〜20分程度の遅延を含む。デイトレードのような秒単位の判断が必要な用途には不向きであり、その場合は証券会社が提供する有料のリアルタイムAPI(楽天RSS等)の利用を検討すべきだ。逆に、月次の資産管理や中長期投資の傾向分析であれば、この遅延は実務上ほとんど問題にならない。
現時点(2026年)でSTOCKHISTORY関数は東京証券取引所の銘柄には対応していません。Microsoft公式から日本株対応の発表はなく、待っていても解決しない可能性が高いです。日本株を扱いたい場合は、本記事で紹介したGoogleスプレッドシート(GOOGLEFINANCE関数)、Python(yfinance)、または専門のスクレイピングツールへの切り替えを検討してください。
主な原因は3つあります。①入力した銘柄名やコードが正しく認識されていない、②Microsoft 365のサブスクリプションが有効でない(買い切り版のExcel 2019/2021では一部機能が使えません)、③データプロバイダー側の一時的な接続障害です。セルを選択して「データ→データ型→テキストに変換」を行い、再度「株価」に変換し直すと接続がリセットされて直る場合があります。改善しない場合はExcelを再起動し、最新バージョンへの更新も確認してください。
「Web株価データ取得 for Excel(Estock)」のような古くから配布されているエクセル用フリーソフトも存在しますが、いくつか注意点があります。多くは公開から年数が経過しており、対象サイトのリニューアルに追従できず動作しなくなるケースが珍しくありません。またマクロ(VBA)形式で配布されているため、有効化の際は配布元の信頼性を必ず確認してください。個人で短期的に試す用途には向きますが、業務での継続利用には保守性の観点で専門ツールやプログラミングベースの方法のほうが安定します。
スクレイピング自体は違法ではありません。公開されている情報を自動的に取得する行為そのものに違法性はなく、総務省が消費者物価指数の算出にスクレイピングを活用するなど、公的機関でも広く使われている技術です。ただし、対象サイトの利用規約でスクレイピングが明確に禁止されている場合や、取得したデータを無断で再配布・商用転売する場合は、著作権法や利用規約違反のリスクが生じます。個人の投資判断のために株価を取得する範囲であれば、robots.txtと利用規約を確認した上で行えば、リスクは低いといえます。
完全な無遅延のリアルタイム取得を無料で実現するのは難しいのが実情です。本記事で紹介したGAS・Python(yfinance)・専門ツールのいずれも、多くの場合15〜20分程度の遅延を伴います。秒単位のリアルタイム性が必要なデイトレード用途では、証券会社が提供する有料APIやRSS機能(楽天RSS等)の利用が必要です。一方、日次や週次の傾向確認・中長期投資の管理であれば、無料の方法でも実用上十分です。
STOCKHISTORY関数や一部の「データ型」機能はMicrosoft 365(サブスクリプション版)専用で、買い切り版のExcel 2019・2021・2024には搭載されていません。買い切り版を使っている場合は、Power QueryやVBAによるWebスクレイピング、またはGoogleスプレッドシートやPython、専門ツールとの併用が現実的な選択肢になります。
株探のスクレイピングは禁止?合法的な収集方法を解説る完全ガイド
PythonとSeleniumでスクレイピングする方法
【2026年版】株価リアルタイムAPI 7選|無料・日本株対応を比較!
いかがでしょうか?この記事ではエクセルで株価を自動的に取得する方法を紹介しました。エクセルでの株価自動取得は、「米国株中心でとにかく簡単に始めたい」なら株価データ型やSTOCKHISTORY関数で今日から始められる。一方、日本株をリアルタイムに近い形で自動取得したい場合は、エクセル単体では対応できないため、GAS・Python・専門スクレイピングツールのいずれかとの連携が必須になる。
コストを抑えて自分で試したいならGASやPythonが向いているが、サイト構造の変更に追従し続ける保守の手間は避けられない。プログラミングをせずに複数銘柄を継続的に、かつ安定して自動収集したい場合は、 Octoparse のようなノーコードツールで自動検出機能を使い、スケジュール実行機能を組み合わせるのが、運用負荷とリアルタイム性のバランスが取れた現実的な選択肢になる。自分の投資スタイルと技術的な前提条件を確認した上で、最適な方法から始めてみてほしい。