SharePoint(OneDrive for Business含む)のファイルをiframeで埋め込むとき、動画やPDFは表示できるのに「Excelだけ embed.aspx が真っ白になる/開けない」問題に悩むケースがあります。本記事では、Excelの埋め込みが失敗する原因の考え方と、doc.aspx(embedview)で安定させる実務的な手順・使い分けをまとめます。
現象:SharePoint/OneDriveの「Excelだけ」iframeで表示できない
SharePoint Online(OneDrive for Business含む)のドキュメント ライブラリから「埋め込みコード」を取得すると、ファイル種別によっては次のようなURLが出てきます。
- 表示できることが多い形式:_layouts/15/embed.aspx(UniqueId指定、action=view など)
- Excelだけ表示できないことがある:_layouts/15/embed.aspx?UniqueId=… で真っ白、エラー、読み込みが終わらない等
- 代替で表示できる:_layouts/15/Doc.aspx?sourcedoc=…&action=embedview
実際、Microsoftのコミュニティ上でも「embed.aspxは他のファイルは動くのにExcelだけ動かない」という再現報告があり、Excelについては doc.aspx(sourcedoc形式)の利用が必要になるケースがある、という結論が示されています。
結論:Excelは doc.aspx(sourcedoc)+ action=embedview を優先する
結論を先にまとめると、Excelのiframe埋め込みは次の方針が最も事故が少ないです。
- Excelは embed.aspx(UniqueId)にこだわらず、doc.aspx(sourcedoc)で埋め込む
- Excel Online(Excel for the web)側のUIから「埋め込みコード」を生成して、それを使う
- ファイル種別で分岐する実装をするなら、Office Onlineプレビュー系は doc.aspx を優先する
Microsoft Q&Aでも、Excelの表示は doc.aspx?sourcedoc={uid} が必要で、Excel Onlineで埋め込みコードを生成するのが推奨、という回答になっています。
embed.aspx と doc.aspx の違いを整理
実装・運用で迷いやすいポイントなので、まずは「何が違うのか」をざっくり整理します。
| 方式 | 典型URL | 主な役割 | 得意な対象 | 注意点 |
|---|---|---|---|---|
| embed.aspx(UniqueId) | …/_layouts/15/embed.aspx?UniqueId=…&action=view | SharePointの「埋め込み用ビューア」的なページ | PDF/動画/テキスト/画像などで素直に動くことが多い | Excelで動かない(または時期・環境で不安定)という報告がある |
| doc.aspx(sourcedoc) | …/_layouts/15/Doc.aspx?sourcedoc=%7B…%7D&action=embedview | Office for the web(Web版Office)に寄せた表示 | Excel/Word/PowerPoint等のOffice文書の埋め込み | 権限・共有設定により匿名表示可否が変わる。表示調整用パラメータが多い |
また、SharePoint側に「どの拡張子はdoc.aspx必須」という公式な対応表が公開されているわけではなく、少なくともMicrosoft側の回答として「一覧化されたドキュメントはない」という趣旨が語られています。
推奨手順:Excel Onlineで「埋め込みコード」を生成する
Excelの埋め込みで最も確実なのは、SharePointが出す汎用の埋め込みURLを自作するよりも、Excel for the web(Excel Online)から埋め込みコードを生成して、そのまま使うことです。
- Excelファイルを SharePoint Online のドキュメント ライブラリ(または OneDrive for Business)にアップロード
- ブラウザーでファイルを開き、Excel for the web(Excel Online)で表示する
- [ファイル]→[共有]→[埋め込み]を選ぶ
- 埋め込み対象を選ぶ(例:表、セル範囲、ブック全体)
- 生成されたiframeコードをコピーしてWebページへ貼り付け
この手順で生成される埋め込みコードは、結果的に doc.aspx(sourcedoc)形式になることが多く、Excel埋め込みの失敗を回避しやすいです。
iframeコード例(doc.aspx / embedview)
実際にWordPress等へ貼り付ける場合のイメージです(値はダミー)。
<iframe
src="https://tenant.sharepoint.com/sites/site/_layouts/15/Doc.aspx?sourcedoc=%7Bxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx%7D&action=embedview&wdAllowInteractivity=True&wdHideHeaders=True&wdHideGridlines=True"
width="100%"
height="600"
frameborder="0"
scrolling="no">
</iframe>
「どのパラメータが使えるか」は後半でまとめます(ActiveCellやItemなど、Excel特有の制御ができます)。
実装者向け:ファイル種別ごとの“現実的な”使い分けルール
ここが一番知りたいポイントですが、実務的には「Office for the web でプレビューされる系は doc.aspx 優先」が一番安定します。
Microsoft Q&Aでの検証ベースの報告として、少なくとも次のようなファイルは doc.aspx(uid / sourcedoc形式)を使う必要が出やすい、という整理がされています(公式な対応表ではなく、再現テストに基づく話)。
| カテゴリ | 拡張子例 | 推奨URL方式 | 理由・補足 |
|---|---|---|---|
| Excel | xls, xlsx, xlsm, xlsb | doc.aspx(embedview) | embed.aspx(UniqueId)で表示できない事象が再現報告あり |
| Word | doc, docx, docm, dotx, dotm | doc.aspx(view/embedview) | Office for the webの表示経路に寄せた方が安定しやすい |
| PowerPoint | ppt, pptx, pptm, ppsx, potx… | doc.aspx(view/embedview) | プレビュー/埋め込みの実体がOffice for the web側になりやすい |
| PDF/RTF | pdf, rtf | doc.aspx(view/embedview) | 「Office Onlineプレビュー系」として扱われるケースがある |
| OneNote / Visio | one, vsd, vsdx | doc.aspx(view/embedview) | uid方式が必要になったというテスト報告あり(環境差あり) |
| 動画・音声 | mp4, mov, mp3… | embed.aspx でも可(または共有リンクの埋め込み) | ブラウザ再生/専用ビューアで問題が出にくい |
| テキスト・画像 | txt, csv, png, jpg… | embed.aspx でも可 | プレビュー範囲が単純で、失敗時の影響が小さい |
また、SharePoint/OneDrive/Teamsで「プレビュー対応しているファイル種別」自体の一覧はMicrosoftのサポートドキュメントとして提供されています(ただし、どのURL方式で埋め込むべきかの対応表ではない点に注意)。
おすすめの判定戦略(分岐 vs フォールバック)
実装方法としては次の2パターンが現実的です。
| 戦略 | やり方 | メリット | デメリット |
|---|---|---|---|
| 拡張子で分岐 | Office系拡張子なら doc.aspx、それ以外は embed.aspx | 無駄な試行が減り、表示が安定しやすい | 新しい拡張子/仕様変更への追従が必要 |
| フォールバック | まず doc.aspx を試し、失敗したら embed.aspx に切り替える | 仕様変更に強い。拡張子判定のメンテが減る | 失敗判定が難しい(真っ白/タイムアウト等) |
Excelについては分岐で最初から doc.aspxに寄せた方が、余計なトラブルシュートが減ります。
埋め込みURLのパラメータで表示を整える(Excel編)
doc.aspx(embedview)で表示できても、「見せ方」を整えないと業務用途では使いにくいことがあります。Excelの埋め込みはURLパラメータである程度コントロールできます。
Microsoftのサポートドキュメントには、埋め込み用URLに付与できる代表的なパラメータと効果が整理されています。
| パラメータ | 指定例 | 効果 | ポイント |
|---|---|---|---|
| action | action=embedview | 埋め込み向けのビューで表示 | まずはこれが前提 |
| wdAllowInteractivity | wdAllowInteractivity=True | 並べ替え/フィルタ/ピボット等の操作を許可 | 用途が「閲覧のみ」ならFalseも検討 |
| wdHideGridlines | wdHideGridlines=True | グリッド線を非表示 | ダッシュボード用途で見栄えが良くなる |
| wdHideHeaders | wdHideHeaders=True | 行列見出し(A,B,C/1,2,3)を非表示 | 「フォーム」「計算ツール」用途で特に有効 |
| wdHideSheetTabs | wdHideSheetTabs=True | シートタブを非表示 | 閲覧者に別シートを見せたくない場合に便利 |
| wdDownloadButton | wdDownloadButton=True | ダウンロードボタンを表示 | 情報漏えいリスクと利便性のバランスを取る |
| Item | Item=PivotTable1 | 特定のチャート/表/ピボット/名前付き範囲等を表示 | 「ブック全体」より誤操作・情報露出を減らせる |
| ActiveCell | ActiveCell=B4(または ‘Sheet1’!A1 など) | 初期表示時の選択セル(=表示開始位置の目安) | 未指定だと「最後に保存したビュー」が出る仕様 |
ActiveCellを指定しない場合は「最後に保存したビューが表示される」という挙動が明記されています。埋め込みの初期表示が「なぜか変わる」ときは、ここが原因になっていることが多いです。
「範囲が効かない/シート全体が出る/初期表示がズレる」時の対処
現場の運用では、次のような“仕様変更/回帰っぽい”声が出ることがあります。
- 埋め込みUIでセル範囲を選べず、シート全体表示になる
- 以前は開始セル(A1など)を指定できたのに、最近は最後に編集して保存したセルが初期表示になりがち
- 「本来見せたい範囲」が表示されず、左上(A1付近)から始まってしまう
この手の問題は、埋め込みがサービス側(OneDrive/Excel for the web)に強く依存しているため、突然発生することがあります。実際、OneDriveの埋め込みで「正しい範囲が表示されず左上が出るようになった」という報告もあります。
対処としては、アプリ側の修正を待つ以外にも、運用・設計で回避できることがあります。
| 症状 | 原因の見立て | まず試す対処 | 安定させる設計 |
|---|---|---|---|
| 初期表示が最後に編集したセルになる | ActiveCell未指定で「最後に保存したビュー」が出る | ActiveCellを明示指定し、必要なら保存時の選択セルも整える | 埋め込み専用シートを用意し、編集用と分離 |
| 範囲埋め込みが効かずシート全体になる | 埋め込みUI側の制限/変更、またはItem指定が必要 | 「表(テーブル)」化して埋め込み対象に選ぶ | Item(名前付き範囲/テーブル名)で表示対象を固定 |
| 見出し非表示が効かない | wdHideHeadersが無視される/グレーアウトする | URLパラメータを再確認し、キャッシュをクリア | レイアウトをA列・B列寄せにする等、最悪の見え方でも破綻しない配置 |
| 左上(A1付近)から始まる | 範囲指定が反映されていない/初期位置がリセット | ActiveCellで該当シートのセルを指定 | 見せたいコンテンツをA1近辺に配置し、スクロール不要にする |
ポイントは、「埋め込みは閲覧用のUI」であり、編集体験と同じ精度で表示制御できるとは限らない、という前提に立つことです。埋め込みに重要な表や計算フォームほど、埋め込み専用のシート/テーブル/名前付き範囲を用意して固定する方が、長期運用で勝ちます。
運用上の落とし穴:権限・匿名共有・iframe制限
「同じURLでも環境によって表示できたりできなかったり」する場合、URL方式以前に、次の運用条件が影響していることがあります。
共有設定(匿名アクセス/ゲストリンク)
Excelを外部サイトに埋め込む場合、閲覧者が毎回サインインできるとは限りません。Microsoftの手順でも、埋め込み前に共有設定を整えること(例:閲覧者に共有、必要に応じてサインイン要件の確認)が前提として書かれています。
- 組織のポリシーで「匿名共有」が無効だと、外部サイト埋め込みは成立しにくい
- 「社内ポータル(同一テナント内)」の埋め込みと、「完全に別ドメインのWebサイト」への埋め込みでは難易度が違う
SharePoint側の“埋め込み許可”設定(主にSharePointページ内)
SharePointのページにEmbed Webパーツなどで外部サイトを埋め込む場合は、サイトコレクション管理者が「外部ドメインのiframeを許可する/しない」を制御できます。社内向けのページ作成で急に埋め込みが弾かれる場合は、この設定も疑ってください。
SharePointページ内に埋め込みたい場合は「File and Media」も選択肢
「外部サイト」ではなく「SharePointのモダンページにファイルを表示したい」だけなら、File viewer(File and Media)Webパーツを使う方が運用が楽なケースもあります(Excel/Word/PowerPoint/Visio/PDF等が対象)。
よくある質問
Excelだけ doc.aspx が必要になるのは仕様ですか?
少なくとも、embed.aspxでExcelが表示できない事象は複数の再現報告があり、Microsoft側の回答としても「doc.aspx?sourcedoc を使う必要がある」という案内が出ています。
ただし、これが永続的な仕様なのか、一時期の不具合なのかは切り分けが難しく、運用では「Excelはdoc.aspxで埋め込む」を前提に組むのが現実的です。
拡張子ごとの公式な対応表(embed.aspx / doc.aspx)はありますか?
少なくともMicrosoftのコミュニティ回答では「doc.aspxが必要なファイル種別を列挙した公式ドキュメントはない」という趣旨が述べられています。
一方で、OneDrive/SharePoint/Teamsでのプレビュー対応ファイル一覧は公開されています。埋め込み方式の話ではありませんが、対象範囲の把握には役立ちます。
埋め込みで「見せたい範囲」だけ表示させたいです
理想はExcel Onlineの埋め込みUIから「表」「範囲」「ブック全体」を選ぶことですが、うまくいかないときは次の優先順がおすすめです。
- 埋め込み対象を「表(テーブル)」にする(表示が崩れにくい)
- Item(テーブル名/名前付き範囲)で対象を固定する
- ActiveCellで初期表示位置を明示する(未指定だと最後に保存したビューになる点に注意)
まとめ:Excelのiframe埋め込みは「doc.aspx優先」で設計すると強い
- SharePoint/OneDriveの埋め込みで、Excelだけ embed.aspx(UniqueId)で表示できないケースがある
- Excelは doc.aspx?sourcedoc=…&action=embedview を使うのが安定策
- 最も確実なのは、Excel for the web(Excel Online)の[共有]→[埋め込み]でコード生成
- 拡張子で分岐するなら「Officeプレビュー系はdoc.aspx優先、その他はembed.aspxでも可」が現実解
- 範囲や初期表示のズレは、ActiveCell/Item/埋め込み専用シートなどで“壊れても破綻しない”設計に寄せる
「とりあえず表示できればいい」段階ではdoc.aspxに寄せるだけで解決することが多い一方、運用で困るのは「表示範囲」「初期位置」「権限」です。埋め込みを前提にするExcelは、編集用と閲覧用の責務分離(専用シート・専用テーブル)まで踏み込むと、仕様変更にも強くなります。

コメント