「STOCKHISTORY関数を試したら、日本株のコードを入れても#N/A…」「エクセルで毎朝の株価チェックを自動化したいのに、どの方法が自分に合うか分からない」——そう感じてこの記事に来た方へ、まず結論からお伝えします。エクセルで株価を自動取得する方法は、対象が米国株か日本株かで最初に分岐します。米国株や為替がメインなら、エクセル標準の「株価データ型」や「STOCKHISTORY関数」で今日からノーコードで自動化できます。一方、日本株(東証銘柄)をリアルタイムに近い形で自動取得したい場合、エクセル単体の標準機能では対応しておらず、Googleスプレッドシート(GAS)、Python、または専門のスクレイピングツールのいずれかを組み合わせる必要があります。
この記事では、エクセルでの株価自動取得を「コストがかからない方法」から「プログラミング知識がなくても日本株にきちんと対応できる方法」まで4つに分けて、操作手順・メリット・デメリットを実例つきで比較します。あなたが「個人投資家でコストをかけずに日本株を追いたい」のか、「業務で複数銘柄を毎日自動収集したい」のかによって最適解は変わるため、最後まで読めば自分に合った方法と、すぐに試せる手順が分かるようになっています。
エクセルで株価を自動取得する必要性について
株価の自動取得が必要とされる最大の理由は、手動転記によるミスと時間コストの両方を排除できる点にある。複数銘柄のポートフォリオを管理している場合、毎日の終値・始値・出来高をブラウザから一つずつコピーしてエクセルに貼り付ける作業は、銘柄数が10、20と増えるほど現実的ではなくなる。
さらに、自動取得には単純な時短以上のメリットがある。
- ヒューマンエラーの排除:桁の転記ミスや銘柄コードの取り違えを防ぐ
- 分析の即時性:移動平均線やRSIなどのテクニカル指標を、最新データで自動的に再計算できる
- 継続的なデータ蓄積:毎日のデータを自動でログ化すれば、後から独自のバックテストや傾向分析が可能になる
- レポーティングの効率化:月次の投資レポートや社内向け資料作成の手間を大幅に削減できる
ただし、ここで重要な前提がある。「自動取得」と一括りにされる方法の中には、対象市場(米国株/日本株)、更新頻度(リアルタイムか20分遅延か)、必要なスキル(関数のみで済むかプログラミングが必要か)が大きく異なるものが混在している。次では、目的別にどの方法を選ぶべきかを詳しく解説します。
【目的別】Excel株価自動取得の選択ガイド
結論を先に言えば、「対象が米国株か日本株か」「リアルタイム性が必要か」の2点で、適した方法はほぼ決まる。以下では、エクセル標準機能である「株価データ型」「STOCKHISTORY関数」「Power Query」、そして拡張機能である「VBA/API連携」の4つの基本的な選択肢を、それぞれの対応範囲とともに整理する。
データ型(株式)【無料】
エクセルの「データ型(株式)」は、セルに銘柄名やティッカーを入力し、データタブの「株価」をクリックするだけで企業情報に変換される機能だ。変換後はアイコンをクリックして「現在値」「変化率」「PER」などの項目を別セルに展開できる。
米国株(NYSE・NASDAQ上場銘柄)であれば、ティッカーシンボル(例:”AAPL”)を入力するだけで認識される。この機能で取得される企業情報や株価データは、LSEG Data & Analyticsという別会社から提供されている。つまりMicrosoft自身が作っているデータではなく、外部の金融データプロバイダーと連携した機能であるという点は、データの信頼性を判断する上で覚えておきたい。
ただし日本株については対応が不安定で、銘柄名を直接入力しても認識されないケースが多く、後述するSTOCKHISTORY関数と同様の制約を抱えている。
STOCKHISTORY関数
「STOCKHISTORY関数を使えば日本株も取れるのでは?」と考える方が多いが、結論は「現時点では非対応」だ。STOCKHISTORY関数でデータが取得できない、あるいは更新が極端に遅れるという報告が一部のユーザーから上がっており、Microsoft側のデータプロバイダーとの連携トラブルが主な原因とされている。
さらに根本的な制約として、構文と対応範囲は次のとおりだ。
| 項目 | 内容 |
|---|---|
| 構文 | =STOCKHISTORY(証券コード,開始日,[終了日],[間隔],[ヘッダー],[プロパティ]) |
| 米国株の例 | =STOCKHISTORY(“AAPL”,DATE(2024,1,1),DATE(2024,3,31)) |
| 日本株の入力例 | 証券コードの後に”.T”を付与(例:ソニーなら”6758.T”) |
| 必要なライセンス | Microsoft 365 Personal、Family、Business Standard、Business Premiumのいずれかのサブスクリプションが必要 |
“.T”を付けて入力する書き方自体は知られているものの、東証株のヒストリカルデータが安定して返ってくるかは別問題であり、実際に日本株専門の解説記事でも「STOCKHISTORY関数は東京証券取引所には対応していない」と明記され、日本株を管理したい場合はGoogleスプレッドシートのGOOGLEFINANCE関数を検討するよう案内されている。この一点こそが、本記事で日本株対応の方法(GAS・Python・専門ツール)を後半で詳しく扱う理由である。
なお、データの即時性についても誤解されやすい点がある。STOCKHISTORY関数はリアルタイムではなく、市場ごとに15〜20分程度の遅延がある。デイトレードの判断材料としては不向きで、月次レポートや日次の傾向確認に向いた関数だと理解しておくとよい。
Power Query
Power Queryは、Webページやファイルから柔軟にデータを取り込める機能で、株価データ型やSTOCKHISTORY関数が対応していない情報源にも応用できる点が強みだ。データタブの「データの取得」からWebを選択し、Power Queryエディターで不要な列や行を整理した上でシートに読み込む、という流れで使用する。
応用範囲が広い一方で、対象サイトのHTML構造を自分で読み解いてクエリを組む必要があり、サイトのレイアウトが変わるとクエリが崩れる保守コストも発生する。プログラミングは不要だが、「データ構造を理解する」ある程度のITリテラシーは求められる中級者向けの方法だ。
VBA/API
最も自由度が高いのがVBA(マクロ)やAPI連携だ。エクセルVBAを使って自動で株価を取得するプログラムを組めば、銘柄コードと保有数を入力し、更新ボタンを押すだけで最新株価やPER、PBR、配当を一括取得できるような仕組みも作れる。
ただし、VBAでWebサイトをスクレイピングする場合、VBAからHTTPリクエストを送信してウェブページのHTMLソースを取得し、必要な数値だけを抽出する手法が一般的で、XMLHTTPライブラリを使えばブラウザを起動せず高速にデータを取得できる一方、動的なコンテンツを含むサイトではSeleniumなどのブラウザ操作自動化ツールを組み合わせる必要がある。さらに対象サイトがリニューアルされると取得できなくなるリスクが常にあり、IE関連のサポート終了に伴いEdgeをVBAから操作する設定(Selenium、WebDriver、.NET Frameworkの追加インストール)が必要になるなど、運用の手間が年々増している。VBAは「学習コストをかけてでも自社専用の仕組みを作りたい」企業向けの選択肢と言える。
エクセルで株価を自動取得する方法は?
ここまでの内容を踏まえると、「エクセルで株価を自動取得する方法」への最短の答えは次の通りだ。米国株中心なら「データ型」または「STOCKHISTORY関数」、日本株を含む場合はエクセル単体では不十分なため、外部ツールとの連携が必要になる。
具体的な操作のミニマム手順は以下のとおり。
- セルに銘柄のティッカー(米国株)またはコード+”.T”(日本株、ただし非対応の場合あり)を入力する
- データタブの「株価」をクリックしてデータ型に変換する
- 変換後に表示されるアイコンをクリックし、必要な項目(現在値・前日比など)を選んで挿入する
- 履歴データが必要な場合は、別セルでSTOCKHISTORY関数を使用する
この手順は3〜5分で完了するほど簡単だが、前章で見たとおり日本株には適用できないという大きな制約がある。「自分の対象銘柄が日本株かどうか」を最初に確認した上で次に進むことが、この記事全体で最も重要な分岐点になる。
株価をリアルタイムに取得する他の方法は?
日本株をリアルタイムに自動取得したい場合、現実的な選択肢は「スプレッドシート(GAS)」「Python」「専門的なスクレイピングツール」「専門業者への依頼」の4つに絞られる。それぞれ必要なスキル・コスト・保守性が大きく異なるため、順に具体的な操作手順とともに見ていく。
方法1:スプレッドシート(GAS)を使って株価データを抽出する
Googleスプレッドシートには日本株にも対応した「GOOGLEFINANCE関数」があり、Google Apps Script(GAS)と組み合わせることで、抽出したデータをエクセル形式で保存・活用できる。この方法は米国株だけでなく国内株の情報も取得できる点が魅力だが、株価を公開しているWEBサイトの中にはスクレイピングを禁止しているものもあるため、必ず対象サイトのrobots.txtを確認する必要がある。
操作手順(例:トヨタ自動車[7203]の株価をGoogleファイナンス経由で取得する場合)

- Googleスプレッドシートを新規作成し、任意のセルに =GOOGLEFINANCE(“TYO:7203”, “price”) と入力する
- セルにトヨタ自動車の現在値が表示されることを確認する
- 拡張機能メニューから「Apps Script」を開き、複数銘柄をループで取得し定期実行するスクリプトを作成する(セルから直接関数を呼び出す方式は再計算の負荷が大きいため非推奨)
- トリガーを設定し、毎日決まった時間に自動でシートを更新するようにする
- 「ファイル」→「ダウンロード」→「Microsoft Excel」を選択し、更新済みのデータをxlsx形式でエクセルに取り込む
関連記事
方法2:Pythonを使う方法でデータをスクレイピングする
プログラミング経験がある場合、Pythonは最も柔軟で拡張性の高い選択肢になる。yfinanceは、Yahoo! Financeからデータを取得するオープンソースのPythonライブラリで、インストールも利用も完全無料、世界中の株式市場(日本株含む)のデータに対応している。APIキーの登録すら不要で、数行のコードで株価取得を始められるため、初めて株価のAPIに触れる方にも扱いやすい。
操作手順(例:トヨタ自動車の株価をyfinanceで取得する場合)

ステップ1:ターミナルで pip install yfinance pandas openpyxl を実行しライブラリをインストールする
ステップ2:Pythonスクリプトに import yfinance as yf と記述する
ステップ3:data = yf.Ticker(“7203.T”).history(period=”1mo”) でトヨタ自動車(証券コード7203)の直近1ヶ月の株価データを取得する
ステップ4:data.to_excel(“toyota_stock.xlsx”) として取得結果をエクセルファイルに書き出す
ステップ5:タスクスケジューラ(Windows)やcron(Mac/Linux)にスクリプトを登録し、毎日自動実行されるようにする
ただし、yfinanceには15分程度のディレイがある点に注意が必要で、より本格的に日本株を扱う場合はJPX(日本取引所グループ)公式のJ-Quants APIへの移行も検討材料になる。Pythonは自由度が非常に高い反面、環境構築・エラー対応・スクリプトの保守をすべて自分で行う必要がある点は他の方法と大きく異なる。
関連記事
PythonでWebスクレイピングする入門ガイド【サンプルコードあり】
方法3:専門的なスクレイピングツールで株価を取得する

プログラミングをしたくない、またはVBA・Pythonの保守コストを避けたい場合、Octoparseのようなノーコードのスクレイピングツールが選択肢になる。GASやPythonと違い、Webページの構造をクリック操作だけで認識させ、コードを書かずに定期実行まで設定できる点が最大の違いだ。
「Webスクレイピングの専門知識がなくても、Octoparseなら食べログやAmazon、各求人サイトに対応した既存テンプレートを選択するだけで、必要なデータを即座に収集可能です。
https://www.octoparse.jp/template/amazon-jp-review-details-scraper
https://www.octoparse.jp/template/google-maps-store-listing-scraper
https://www.octoparse.jp/template/indeed-job-listing-scraper-jp-by-keywords
さらに、最新のMCP(Model Context Protocol)連携機能により、ChatGPT、Claude、CursorといったAIアシスタントから直接リアルタイムのWebデータを取得するようになりました。チャット画面を離れることなく、抽出した構造化データをそのまま分析やレポート作成に活用できるため、情報収集の効率は劇的に向上します。
操作手順(例:Yahoo!ファイナンスのトヨタ自動車[7203]個別銘柄ページから株価を取得する場合)
ステップ1:Octoparseの公式サイトからツールをダウンロードし、インストールする
ステップ2:Octoparseを起動し、検索ウィンドウにYahoo!ファイナンスのトヨタ自動車の個別銘柄ページURL(https://finance.yahoo.co.jp/quote/7203.T)を入力する

ステップ3:ページが開いたら「操作提案」上の「ウェブページのデータを自動検出」を選択するまたは自分で選択したいデータをクリックし、「類似要素をすべて選択」をクリックする

ステップ4:データプレビューで抽出したデータ(前日終値・始め値・高値など)を確認する

ステップ5:不要なフィールドを削除、または項目名を分かりやすく編集する
ステップ6:「実行」をクリックし、「抽出開始」から「ローカル収集」または「クラウド収集」を選ぶ。実行が終了したらその場でCSVまたはExcel形式にエクスポートする

ステップ7:毎日決まった時間にデータを自動更新したい場合は、Octoparseのダッシュボードで対象タスクの「もっと」をクリックし、「クラウド収集」内の「スケジュール実行を登録」を選択してください。実行スケジュールを作成すると、パソコンの電源がオフの状態でも、クラウド上でデータ収集が自動的に継続されます。


複数銘柄をまとめて自動化したい場合は、すでに用意されているYahoo Finance Scraperテンプレートを使うとさらに早い。このテンプレートでは銘柄コードを入力するだけで、株価・出来高などの主要項目をワンクリックで取得できるよう事前に設計されている。
競合情報も営業リストも、ウェブデータをそのままExcel・CSV・Google Sheetsに出力
コード不要、誰でも今日から。クリック操作だけで必要な項目を自動抽出
Google Maps・食べログ・iタウンページ向けテンプレートで、リード獲得をすぐに開始
クラウドで毎日・毎週自動実行。大量取得でも安定して、競合動向を常に把握
MCP対応でAIエージェントと連携。収集データをAIに渡して分析・活用まで一気通貫
クレジットカード不要で無料スタート。世界600万人以上が選んだ信頼のツール
方法4:専門業者に依頼する
社内システムへの本格的な組み込みや、大量銘柄のリアルタイム監視が必要な場合は、専門業者に依頼してシステムを構築する方法もある。証券会社や日本取引所グループ(JPX)などが提供する正式なAPIを活用し、システムを構築する方法が最も信頼性に優れているとされる一方で、コストは月額数万円から数十万円規模になることが一般的で、個人投資家にはハードルが高い選択肢だ。
社内に開発リソースがある中〜大規模企業や、コンプライアンス要件が厳しい金融機関には適しているが、本記事の主な読者層(個人投資家・中小企業の業務効率化)にとっては、次の部分で比較する4つの方法のいずれかで十分なケースが多い。
各方法の比較を徹底解説
4つの方法を、個人投資家・業務担当者が実際に気にする9つの軸で比較する。結論を先に言うと、コストを最優先するなら「GAS」、保守の手間を最小化したいなら「専門ツール(Octoparse等)」、本格的な分析基盤を社内に作るなら「Python」または「専門業者」が向いている。
| 評価軸 | 方法1:GAS(スプレッドシート) | 方法2:Python | 方法3:専門スクレイピングツールOctoparse | 方法4:専門業者に依頼 |
|---|---|---|---|---|
| コスト | 無料 | 無料(ライブラリ利用時) | 無料プランあり、本格運用は有料プラン | 月額数万〜数十万円 |
| 日本株対応 | 対応(GOOGLEFINANCE経由) | 対応(yfinance等、一部15分遅延) | 対応(表示されている情報を取得) | 対応(API契約次第) |
| リアルタイム性 | 準リアルタイム(更新頻度に制限あり) | 多くは15〜20分遅延 | 取得タイミングを自由に設定可能 | 契約次第でリアルタイム可 |
| 必要スキル | 関数の基礎+簡単なスクリプト知識 | プログラミング(Python)必須 | ノーコード、マウス操作のみ | 不要(業者に委託) |
| 初期セットアップ時間 | 30分〜1時間程度 | 1〜3時間(環境構築含む) | 10〜30分程度(自動検出機能利用時) | 数日〜数週間(要件定義含む) |
| データ精度 | 対象サイトの表示に依存 | ライブラリの実装精度に依存 | 自動検出後の確認・調整で精度を担保 | 契約要件に応じて高精度を保証可能 |
| 保守性(サイト変更への耐性) | 低い(構造変更で関数が崩れる場合あり) | 低い(HTML変更でコード修正が必要) | 中〜高い(自動検出の再実行で対応しやすい) | 高い(業者側で保守対応) |
| 法的リスクへの配慮 | robots.txt確認が必要 | robots.txt・利用規約確認が必要 | robots.txt・利用規約確認が必要 | 業者側でリスク管理されることが多い |
| 向いている人 | 無料で日本株を試したい個人投資家 | エンジニア、分析基盤を自作したい人 | 非エンジニアで運用負荷を抑えたい人・複数銘柄を定期収集したい個人〜中小企業 | 大量銘柄監視や厳格な要件がある企業 |
エクセルで株価を自動取得する時の注意点について
どの方法を選んでも、共通して押さえておくべき注意点が3つある。
1. robots.txtと利用規約を必ず確認する
対象サイトのドメインの末尾に「/robots.txt」を付けてアクセスすれば、クローラーへの許可・禁止指示を確認でき、「Disallow:」で指定されたパスはスクレイピングを避けることが推奨される。インターネット上で公開されている情報であっても、文章や図表には著作権が認められることがあり、誰でも閲覧できるという理由だけで自由に取得・加工・事業利用できるとは限らない点は、特に商用利用を検討している場合に重要だ。
日本の著作権法上は第30条の4により情報解析目的の複製が一定の条件下で許容されているが、著作権者の利益を不当に害しない範囲に限定されるため、個人の投資判断のための取得であれば一般的にリスクは低いが、データを再配布・販売する場合は事前に確認が必要だ。Octoparseのrobots.txt確認方法については、robots.txtの確認方法を解説した記事でも詳しく紹介されている。
2. アクセス頻度に配慮し、サーバーに負荷をかけない
2010年に発生した岡崎市立中央図書館事件では、1秒に1回程度のアクセスを行った男性が逮捕(後に起訴猶予)され、問題とされたのは「不正アクセス」ではなく業務妨害だった点は重要な教訓だ。短時間に大量のリクエストを送ると対象サイトのサーバーに過度な負荷をかけてしまうため、リクエストの間隔は最低でも1秒以上空けることが推奨される。GAS・Python・専門ツールいずれの方法でも、この原則は共通して守るべきマナーだ。
3. データの遅延を理解した上で使い分ける
本記事で紹介した方法の多くは15〜20分程度の遅延を含む。デイトレードのような秒単位の判断が必要な用途には不向きであり、その場合は証券会社が提供する有料のリアルタイムAPI(楽天RSS等)の利用を検討すべきだ。逆に、月次の資産管理や中長期投資の傾向分析であれば、この遅延は実務上ほとんど問題にならない。
株価の自動取得に関するよくある質問
Q1. STOCKHISTORY関数で日本株が取得できないのですが、対応する予定はありますか?
現時点(2026年)でSTOCKHISTORY関数は東京証券取引所の銘柄には対応していません。Microsoft公式から日本株対応の発表はなく、待っていても解決しない可能性が高いです。日本株を扱いたい場合は、本記事で紹介したGoogleスプレッドシート(GOOGLEFINANCE関数)、Python(yfinance)、または専門のスクレイピングツールへの切り替えを検討してください。
Q2. エクセルの株価データ型で「#N/A」や「#NAME?」エラーが出るのはなぜですか?
主な原因は3つあります。①入力した銘柄名やコードが正しく認識されていない、②Microsoft 365のサブスクリプションが有効でない(買い切り版のExcel 2019/2021では一部機能が使えません)、③データプロバイダー側の一時的な接続障害です。セルを選択して「データ→データ型→テキストに変換」を行い、再度「株価」に変換し直すと接続がリセットされて直る場合があります。改善しない場合はExcelを再起動し、最新バージョンへの更新も確認してください。
Q3.無料のフリーソフトで株価を自動取得するのは安全ですか?
「Web株価データ取得 for Excel(Estock)」のような古くから配布されているエクセル用フリーソフトも存在しますが、いくつか注意点があります。多くは公開から年数が経過しており、対象サイトのリニューアルに追従できず動作しなくなるケースが珍しくありません。またマクロ(VBA)形式で配布されているため、有効化の際は配布元の信頼性を必ず確認してください。個人で短期的に試す用途には向きますが、業務での継続利用には保守性の観点で専門ツールやプログラミングベースの方法のほうが安定します。
Q4. Webスクレイピングで株価を取得するのは違法ではないのですか?
スクレイピング自体は違法ではありません。公開されている情報を自動的に取得する行為そのものに違法性はなく、総務省が消費者物価指数の算出にスクレイピングを活用するなど、公的機関でも広く使われている技術です。ただし、対象サイトの利用規約でスクレイピングが明確に禁止されている場合や、取得したデータを無断で再配布・商用転売する場合は、著作権法や利用規約違反のリスクが生じます。個人の投資判断のために株価を取得する範囲であれば、robots.txtと利用規約を確認した上で行えば、リスクは低いといえます。
Q5. リアルタイムで株価を取得したいのですが、無料でできますか?
完全な無遅延のリアルタイム取得を無料で実現するのは難しいのが実情です。本記事で紹介したGAS・Python(yfinance)・専門ツールのいずれも、多くの場合15〜20分程度の遅延を伴います。秒単位のリアルタイム性が必要なデイトレード用途では、証券会社が提供する有料APIやRSS機能(楽天RSS等)の利用が必要です。一方、日次や週次の傾向確認・中長期投資の管理であれば、無料の方法でも実用上十分です。
Q6. Excel 2019や2021(買い切り版)でも株価の自動取得は使えますか?
STOCKHISTORY関数や一部の「データ型」機能はMicrosoft 365(サブスクリプション版)専用で、買い切り版のExcel 2019・2021・2024には搭載されていません。買い切り版を使っている場合は、Power QueryやVBAによるWebスクレイピング、またはGoogleスプレッドシートやPython、専門ツールとの併用が現実的な選択肢になります。
関連記事
株探のスクレイピングは禁止?合法的な収集方法を解説る完全ガイド
【2026年版】株価リアルタイムAPI 7選|無料・日本株対応を比較!
まとめ
いかがでしょうか?この記事ではエクセルで株価を自動的に取得する方法を紹介しました。エクセルでの株価自動取得は、「米国株中心でとにかく簡単に始めたい」なら株価データ型やSTOCKHISTORY関数で今日から始められる。一方、日本株をリアルタイムに近い形で自動取得したい場合は、エクセル単体では対応できないため、GAS・Python・専門スクレイピングツールのいずれかとの連携が必須になる。
コストを抑えて自分で試したいならGASやPythonが向いているが、サイト構造の変更に追従し続ける保守の手間は避けられない。プログラミングをせずに複数銘柄を継続的に、かつ安定して自動収集したい場合は、Octoparseのようなノーコードツールで自動検出機能を使い、スケジュール実行機能を組み合わせるのが、運用負荷とリアルタイム性のバランスが取れた現実的な選択肢になる。自分の投資スタイルと技術的な前提条件を確認した上で、最適な方法から始めてみてほしい。
競合情報も営業リストも、ウェブデータをそのままExcel・CSV・Google Sheetsに出力
コード不要、誰でも今日から。クリック操作だけで必要な項目を自動抽出
Google Maps・食べログ・iタウンページ向けテンプレートで、リード獲得をすぐに開始
クラウドで毎日・毎週自動実行。大量取得でも安定して、競合動向を常に把握
MCP対応でAIエージェントと連携。収集データをAIに渡して分析・活用まで一気通貫
クレジットカード不要で無料スタート。世界600万人以上が選んだ信頼のツール



