ExcelのPower Queryには、Webページの表をワークシートへ取り込む「Webから」コネクタがあります。URLを貼るだけで済むページもある一方、ブラウザでは見えているデータが候補に出ないこともあります。
この差がどこから来るのか気になり、日本語で公開されている表を例に、Microsoftの日本語ドキュメントを基準として切り分け方を整理しました。先に結論を書くと、最初に見るべきなのはExcelの設定よりも、取得先が「Power Queryで扱いやすいデータ源かどうか」です。
元記事:Octoparse公式ブログの「エクセルでWebからデータ取得できない時の原因と解決策10選」
試したこと
対象にしたのは、日本語版Wikipediaの「都道府県の人口一覧」です。都道府県名と国勢調査の人口がHTMLの表で公開されており、Power Queryの基本操作を試す対象として構造を確認しやすいため選びました。
手元の環境ではデスクトップ版Excelを起動できないため、Power Queryでの最終的な読み込み結果までは実測していません。Excel上で試す場合は、次の手順で再現します。
最短手順:Power Queryで取得する
Microsoft 365版Excelでは、次の流れでWebページへ接続します。
-
データタブを開く -
Webからを選ぶ- 表示されない場合は
データの取得→その他のデータソースから→Webから
- 表示されない場合は
- 取得先のURLを入力する
- 初回接続時は、ページに合った認証方法を選ぶ
- ナビゲーターでテーブルを選択する
- そのまま取り込むなら
読み込み、列の削除や型変換をするならデータの変換を選ぶ
ナビゲーターに目的の表が出ない場合は、例を使用してテーブルを追加 も試せます。取得したい列の値をいくつか入力すると、その例をもとに表が組み立てられます。
ただし、Microsoftの案内では機能や画面がWindows、macOS、Excel for the webで異なる場合があるとされています。手元の画面に同じ項目がないときは、まず利用環境とExcelのバージョンを確認します。
静的な表を取り込む
次のURLを指定します。
https://ja.wikipedia.org/wiki/都道府県の人口一覧
ナビゲーターに候補が表示されたら、「順位」「都道府県」「2020年(令和2年)」など、目的の列を含むテーブルを選びます。不要な年代の列がある場合は、読み込み ではなく データの変換 を選び、Power Queryエディターで列を削除してからワークシートへ読み込みます。
このタイプは、取得したい値がHTMLの表として最初から返されるため、Webコネクタと相性がよい例です。ただしWikipediaの内容は更新されるので、業務データの一次情報として使う場合は各出典も確認する必要があります。
動的ページでは何が違うのか
日本語のサイトでも、ブラウザで見えているデータがJavaScriptによって後から表示されることがあります。商品一覧の追加読み込み、検索条件を選んだ後の結果、無限スクロールなどが典型例です。
この場合、Excel側の設定だけを繰り返し変更しても、初期HTMLから目的の表を作れない可能性があります。次に調べる対象は、認証や列の選択ではなく、ブラウザ表示後にどの通信でデータが届くかです。
判断基準は次のとおりです。
- 初期HTMLに欲しい値がある:Power Queryの候補
- 公式API、CSV、JSONがある:画面ではなく公式データへ接続
- クリックやJavaScript実行後に値が現れる:ブラウザ操作を扱える方法を検討
取れないときは4段階で切り分ける
1. URL自体へ接続できるか
最初の接続でエラーになる場合は、URLの入力ミス、ネットワーク、認証方式を確認します。
Power QueryのWebコネクタが扱える認証はBasicだけではありません。デスクトップ版では、接続方法に応じて匿名、Windows、Basic、Web API、組織アカウントなどを選べます。ただし、任意のWebサービスに対するOAuthログインがすべて動くわけではありません。
認証方法を誤って保存した場合は、Excelの データソースの設定 から対象URLのアクセス許可を編集または削除し、接続し直します。
2. Power Queryが表として認識できるか
接続できても、ナビゲーターに目的の表が現れないことがあります。
典型的なのは、画面上では表に見えてもHTMLの <table> ではなく、<div> や <ul> の組み合わせで作られているページです。この場合は次の順で試します。
-
Webビューでページと検出済みテーブルを確認する -
例を使用してテーブルを追加で、欲しい値を数件入力する - 同じデータを配布する公式API、CSV、JSONがないか探す
APIやCSVが公式に用意されているなら、私は画面のHTMLを解析するより先にそちらを選びます。列構造が明示されており、画面デザインの変更にも引きずられにくいためです。
3. データがJavaScriptで後から表示されていないか
ブラウザで見えるのにPower Queryでは空になる場合、データが初期表示後に読み込まれている可能性があります。無限スクロール、ボタンクリック後の一覧、SPAの画面などが該当します。
ここで注意したいのは、「JavaScriptを使うページはすべて取得不可」とは言い切れないことです。Power QueryにはWebコンテンツを扱う複数の仕組みがあり、利用製品や実行環境によって挙動が異なります。それでも安定して表が得られない場合は、次の選択肢を検討します。
- ブラウザの開発者ツールで通信を確認し、利用可能な公式APIへ接続する
- ブラウザ操作が必要なら、PlaywrightやSeleniumなどで取得処理を実装する
- コードの保守が難しい業務では、ブラウザ操作型のスクレイピングツールを使う
4. 取得後に更新できるか
一度読み込めても、元ページの変更が自動でワークシートへ反映されるとは限りません。手動更新は データ → すべて更新 から行います。
デスクトップ版Excelでは、接続のプロパティに次の設定があります。
- ファイルを開くときに更新する
- 一定間隔で更新する
- バックグラウンドで更新する
更新に失敗したら、認証の有効期限だけでなく、URL、列名、テーブル構造が取得時から変わっていないかも確認します。
Power Queryを使うか、別の方法へ切り替えるか
私は次のように判断します。
| 取得先の状態 | 最初に試す方法 |
|---|---|
| 公開された静的なHTMLテーブル | ExcelのWebコネクタ |
| 公式API、CSV、JSONがある | 公式の配布元へ直接接続 |
| 整形や結合を繰り返したい | Power Queryで変換手順を保存 |
| クリック、スクロール、ページ遷移が必要 | ブラウザ自動化または専用ツール |
| ログイン後の画面 | 認証方式と利用規約を確認してから選定 |
| 大量・定期取得 | Excelだけに閉じず、APIや収集基盤を検討 |
ブラウザ操作型ツールの一例がOctoparseです。ページ上で取得項目やページ遷移を指定し、結果をExcelやCSVへ出力します。一方、公開APIへ数回リクエストするだけの処理なら、PythonやPower Queryのほうが小さな構成で済みます。対象ページの性質と、運用する人がどこまで保守できるかで選ぶのが現実的です。
スクレイピングの前に確認すること
技術的に取得できることと、取得してよいことは別です。実行前に少なくとも次を確認します。
- 対象サイトの利用規約とrobots.txt
- 公式APIやダウンロード機能の有無
- 著作権、個人情報、データベースに関する権利
- アクセス頻度と相手サーバーへの負荷
- ログイン情報やAPIキーの保存方法
アクセス制限を回避することを前提にせず、許可された範囲で、必要な件数だけ取得します。
まとめ
ExcelでWebデータを取得できないときは、設定を何度も変える前に、次の順で見ると原因を絞りやすくなります。
- URLと認証方法は正しいか
- Power Queryが表として認識できる構造か
- JavaScriptやブラウザ操作が必要なページか
- 公式API、CSV、JSONという安定した入口がないか
- 更新頻度とデータ量がExcel向きか
静的な表の取り込みと整形にはPower Queryが便利です。反対に、複雑な画面操作や大量の定期収集が必要なら、Excelを最終出力先として残しつつ、収集部分だけ別の仕組みに分けるほうが保守しやすくなります。

