こんにちは、阿久梨絵です!
Excel では XML データを読み込む際に、XSLT(Extensible Stylesheet Language Transformations)を使って表示形式を整えることができます。
ところが Excel 365 では、XSLT を適用した XML を「読み取り専用」でしか扱えないケースがあることが知られています。
「編集できない」「保存できない」「読み取り専用で開かれてしまう」——そんな状況に戸惑った経験がある方も多いかもしれません。
この記事では、この現象が起きる背景と、実務での向き合い方を整理します。
1. Excel 365 が XSLT を制限する理由
セキュリティ強化の一環
XSLT は XML を変換するための強力な仕組みで、外部ファイルの読み込みやスクリプト的な処理も可能です。
その柔軟性ゆえに、悪意あるコードを仕込む余地があるとされ、Microsoft は Excel 365 で XSLT の扱いを慎重にしています。
その結果、
・XSLT を含む XML を開くと「読み取り専用」扱いになる
・編集や再保存が制限される
といった挙動が発生します。
2. どんなときに「読み取り専用」になるのか
Excel 365 では、以下のような条件が重なると XSLT が制限されやすくなります。
外部 XSLT ファイルを参照している
ローカル以外(ネットワークパス、URL など)を参照している場合、Excel は安全性を優先して編集をブロックします。
XSLT 内で高度な処理を行っている
ファイル操作や外部参照など、セキュリティリスクが高い命令が含まれていると、Excel は編集を許可しません。
XML マップとして取り込んでいる
Excel の「XML マップ」機能は、現在は非推奨扱いで、機能制限が増えています。
XSLT を伴う XML マップは特に制限されやすい傾向があります。
3. Excel 365 の仕様変更による影響
Excel は 2016 以降、XML 関連機能の多くを縮小しています。
特に Office 365(現 Microsoft 365)では、セキュリティとクラウド連携を優先した結果、XSLT を使った XML 編集は「閲覧中心」へとシフトしています。
そのため、以前のバージョンでは編集できた XML が、365 では読み取り専用になるケースが発生します。
4. 回避策として考えられる方法
Excel 側の仕様であるため、完全に元の挙動に戻すことは難しいのですが、次のようなアプローチが現実的です。
XSLT を使わずに XML を読み込む
XSLT を外し、XML をそのまま Excel に取り込む方法です。
整形は Excel 上で行う必要がありますが、編集制限は回避できます。
XSLT をローカルに配置する
外部参照を避けることで、読み取り専用が解除される場合があります。
XSLT の処理内容をシンプルにする
外部参照や高度な命令を削ることで、Excel が安全と判断するケースがあります。
変換処理を Excel 外で完結させる
PowerShell、Python、xsltproc などで XML → CSV/Excel に変換してから Excel で開く方法です。
実務ではこの方法が最も安定します。
5. 実務での考え方
Excel 365 の XSLT 制限は、
「不具合」ではなく、セキュリティを優先した仕様変更
として捉えると理解しやすくなります。
XML + XSLT を Excel で直接編集するワークフローは、今後さらに制限される可能性があります。
そのため、
・変換処理は Excel の外で行う
・Excel はあくまで閲覧・加工の最終ステップにする
といった運用に切り替えると、トラブルが減りやすくなります。
まとめ
・Excel 365 は XSLT を含む XML を「読み取り専用」で扱うことがある
・これはセキュリティ強化による仕様で、不具合ではない
・外部参照や高度な XSLT 処理があると制限されやすい
・実務では、変換処理を Excel 外で完結させる運用が安定する
Excel の仕様は今後も変わる可能性がありますが、背景を理解しておくことで、作業の見通しが立てやすくなります。
必要に応じて、より安全で安定したワークフローへ移行していくことが大切です。
阿久梨絵でした!
