SharePoint/OneDriveのExcelをiframe埋め込みできない?embed.aspxが効かない原因とdoc.aspx(embedview)で解決する方法

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=viewSharePointの「埋め込み用ビューア」的なページPDF/動画/テキスト/画像などで素直に動くことが多いExcelで動かない(または時期・環境で不安定)という報告がある
doc.aspx(sourcedoc)…/_layouts/15/Doc.aspx?sourcedoc=%7B…%7D&action=embedviewOffice for the web(Web版Office)に寄せた表示Excel/Word/PowerPoint等のOffice文書の埋め込み権限・共有設定により匿名表示可否が変わる。表示調整用パラメータが多い

また、SharePoint側に「どの拡張子はdoc.aspx必須」という公式な対応表が公開されているわけではなく、少なくともMicrosoft側の回答として「一覧化されたドキュメントはない」という趣旨が語られています。

推奨手順:Excel Onlineで「埋め込みコード」を生成する

Excelの埋め込みで最も確実なのは、SharePointが出す汎用の埋め込みURLを自作するよりも、Excel for the web(Excel Online)から埋め込みコードを生成して、そのまま使うことです。

  1. Excelファイルを SharePoint Online のドキュメント ライブラリ(または OneDrive for Business)にアップロード
  2. ブラウザーでファイルを開き、Excel for the web(Excel Online)で表示する
  3. [ファイル]→[共有]→[埋め込み]を選ぶ
  4. 埋め込み対象を選ぶ(例:表、セル範囲、ブック全体)
  5. 生成された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方式理由・補足
Excelxls, xlsx, xlsm, xlsbdoc.aspx(embedview)embed.aspx(UniqueId)で表示できない事象が再現報告あり
Worddoc, docx, docm, dotx, dotmdoc.aspx(view/embedview)Office for the webの表示経路に寄せた方が安定しやすい
PowerPointppt, pptx, pptm, ppsx, potx…doc.aspx(view/embedview)プレビュー/埋め込みの実体がOffice for the web側になりやすい
PDF/RTFpdf, rtfdoc.aspx(view/embedview)「Office Onlineプレビュー系」として扱われるケースがある
OneNote / Visioone, vsd, vsdxdoc.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に付与できる代表的なパラメータと効果が整理されています。

パラメータ指定例効果ポイント
actionaction=embedview埋め込み向けのビューで表示まずはこれが前提
wdAllowInteractivitywdAllowInteractivity=True並べ替え/フィルタ/ピボット等の操作を許可用途が「閲覧のみ」ならFalseも検討
wdHideGridlineswdHideGridlines=Trueグリッド線を非表示ダッシュボード用途で見栄えが良くなる
wdHideHeaderswdHideHeaders=True行列見出し(A,B,C/1,2,3)を非表示「フォーム」「計算ツール」用途で特に有効
wdHideSheetTabswdHideSheetTabs=Trueシートタブを非表示閲覧者に別シートを見せたくない場合に便利
wdDownloadButtonwdDownloadButton=Trueダウンロードボタンを表示情報漏えいリスクと利便性のバランスを取る
ItemItem=PivotTable1特定のチャート/表/ピボット/名前付き範囲等を表示「ブック全体」より誤操作・情報露出を減らせる
ActiveCellActiveCell=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は、編集用と閲覧用の責務分離(専用シート・専用テーブル)まで踏み込むと、仕様変更にも強くなります。

この記事を書いた人

実務の現場で詰まりがちなポイントを地図にするITブログ「IT trip」を運営。Windows/Office(Teams・Excel)からSQL、サーバ運用、ガジェットまで、再現性のある手順と“なぜそうなるか”を丁寧に解説します。読んだらすぐ試せること、そして迷った人の次の一歩が見えることを大切にしています。

コメント

コメントする

目次