Excelのファイルを右クリックして、名前を変える。
売上表.xlsx → 売上表.zip
ダブルクリックすると、開く。中にフォルダとファイルが入っている。
これは裏技ではなく、仕様だ。.xlsx は、はじめからZIPファイルとして設計されている。
知っていると、壊れたファイルから中身を取り出せたり、資料に貼られた画像をまとめて抜き出せたり、思わぬ情報漏えいを防げたりする。
この記事は育ちます。公開後も、会話パート・トーク・補足を足していきます。
公開 2026-10-14 / 最終更新 2026-10-14(公開)
水深 — Office Open XMLという規格
2007年、Excel 2007から標準の保存形式が変わった。
- .xls それまでの形式。バイナリ(人が読めない数値の並び)
- .xlsx 新しい形式。XMLファイルをZIPでまとめたもの
この形式をOffice Open XMLという。ECMA-376として標準化され、その後ISO/IEC 29500にもなっている。公開された規格だ。
だから、Excelがなくても中身を読めるし、プログラムから作ることもできる。pythonのライブラリでExcelファイルを生成できるのは、この規格が公開されているからだ。
中に何が入っているか
実際に開いてみると、こういう構成になっている。
[Content_Types].xml
中に入っているファイルの種類の一覧。目次のようなもの。
_rels/
ファイル同士の関係を書いたフォルダ。どのシートがどのファイルか、といった対応づけ。
docProps/
- core.xml 作成者、最終更新者、作成日時、更新日時
- app.xml アプリケーション名、シート名の一覧、編集時間
xl/
ここが本体。
- workbook.xml ブック全体の設定。シートの一覧、名前の定義
- worksheets/sheet1.xml 1枚目のシートの中身。セルの値と数式
- sharedStrings.xml 文字列を一元管理する表
- styles.xml 書式の定義
- media/ 貼り付けた画像がそのまま入っている
- calcChain.xml 数式の計算順序
- vbaProject.bin マクロ(.xlsmの場合のみ)
フォルダを開いていくだけで、何が入っているか分かる。Excelファイルは、フォルダを圧縮したものだった。

sharedStrings.xml が、重さの正体
この構造を知ると、「なぜ重いのか」が説明できるようになる。
sharedStrings.xml は、ブック内のすべての文字列を集めた表だ。同じ文字列が何度出てきても、実体は1つだけ持って、セルからは番号で参照する。
たとえば「東京都」が1万回出てくるシートでも、「東京都」という文字列は1つしか保存されない。セルには「文字列表の5番」と書かれている。
重複を排除する仕組みになっている。よくできている。
ただし裏返すと、種類の多い文字列がたくさんあると、この表が巨大になる。
- 商品名が5万種類
- 摘要欄に全部違う文章
- 取引先名が重複なしで1万件
こういうシートは、数値だけのシートより圧倒的に重い。行数ではなく、文字列の種類が効く。
前に「Excelファイルが重い」という話を書いたが、原因のひとつはここにある。数値を減らすより、同じ文字列を使い回す設計にするほうが効くことがある。
画像をまとめて取り出せる
いちばん実用的なのがこれだと思う。
xl/media/ の中に、貼り付けた画像がそのままの形で入っている。
- 資料に貼られた写真を、まとめて取り出したい
- 元の画像ファイルを紛失した
- 1枚ずつ「図として保存」するのが面倒
こういうとき、拡張子をzipに変えて解凍すれば、image1.png、image2.jpg……と並んで出てくる。
ファイル名は連番になるので、どれがどれか分からなくなる。それでも、1枚ずつ右クリックするよりは速い。
WordやPowerPointも同じ構造なので、.docx や .pptx でも同じことができる。提案書に貼った画像を取り出すときに使える。
作成者の名前が、残っている
こちらは逆に、知らないと危ないほうの話。
docProps/core.xml には、作成者名と最終更新者名が入っている。
Excelにログインしているアカウント名や、Officeのインストール時に入れた名前がそのまま入る。社外にファイルを送ると、その名前も一緒に届く。
- 前任者の名前が残ったまま送っている
- 使い回した見積書に、別の顧客向けに作った人の名前が残っている
- 個人名を出したくない場面で、フルネームが入っている
さらに、app.xml には編集にかけた合計時間が記録されていることがある。「この資料、10分で作ったんだな」と分かってしまう。
確認と削除の方法
Excelの「ファイル」→「情報」→「問題のチェック」→「ドキュメント検査」。
検査を実行すると、個人情報、コメント、非表示のシート、非表示の行列などが一覧で出る。まとめて削除できる。
社外に出すファイルは、ドキュメント検査をかけてから送る。 これは習慣にしておく価値があると思う。
非表示のシートは、隠れていない
構造を知ると、もうひとつ気づくことがある。
非表示にしたシートは、ファイルの中に普通に入っている。
workbook.xml に「このシートは hidden」と書いてあるだけで、中身の sheetN.xml はそのまま存在する。
だから、
- 非表示シートに単価の原価が入っている
- 使わなくなった前年の見積が残っている
- 計算用の中間データが隠してある
こういうファイルを社外に出すと、見ようと思えば見られる。Excelで再表示するだけでも見えるし、ZIPを開けば確実に見える。
「非表示」はセキュリティではない。 見せたくないものは、シートごと削除してから送る。
シート保護やブック保護も同様で、あれは誤操作を防ぐための機能であって、情報を守る機能ではない。

壊れたファイルから、救い出す
「ファイルが破損しています」と言われて開けなくなったとき。
ZIPとして開けることがある。開ければ、中の sheet1.xml をテキストエディタで見れば、セルの値は読める。書式や数式は失われるが、数字だけは拾える。
もう少し踏み込むと、calcChain.xml を削除してZIPに戻すと開けるようになる場合がある。calcChain.xml は計算順序のキャッシュで、なくてもExcelが再生成する。ここが壊れているだけなら、消せば直る。
ただし、必ずコピーを取ってから試す。手で中身をいじると、確実に壊れるほうへ進むこともある。
.xls との違いと、どちらを使うか
古い形式との違いも整理しておく。
| .xls | .xlsx | |
|---|---|---|
| 形式 | バイナリ | XML + ZIP |
| 最大行 | 65,536 | 1,048,576 |
| 最大列 | 256 | 16,384 |
| ファイルサイズ | 大きい | 圧縮が効くので小さい |
| 破損への強さ | 全体が読めなくなりやすい | 部分的に救える |
| 規格 | 非公開(後に公開) | 公開規格 |
| マクロ | 含められる | .xlsm にする必要がある |
いまから .xls を使う理由は、ほぼない。受け取ったファイルが .xls なら、開いて .xlsx で保存し直すほうが軽くなる。
マクロ入りのファイルが .xlsm という別の拡張子になっているのは、マクロの有無を拡張子で見分けられるようにするためだ。.xlsx にはマクロを入れられない。メールの添付でマクロ付きが弾かれるのも、この区別があるから成立している。
プログラムから扱えるということ
構造が公開されているおかげで、Excelを起動せずにファイルを作ったり読んだりできる。
- サーバ上で、Excelなしで帳票を生成する
- 何百ファイルを一括で処理する
- 特定のセルだけを抜き出して集計する
VBAはExcelの中でしか動かないが、こちらはExcelの外から動かせる。
大量のファイルを扱うなら、Excelの外から触るほうが速い。 1ファイルずつ開いて閉じる時間がかからない。
経理の実務でいえば、「部署ごとに提出された100個のExcelから、特定のセルだけ集める」という作業がこれにあたる。手作業でやると1日仕事だが、外から読めば数分で終わる。
中身を手で書き換えるのは、やめたほうがいい
最後に注意を。
構造が分かると「直接書き換えれば速いのでは」と思う。実際できることもある。
ただ、おすすめしない。
- ファイル同士の関係(_rels)が整合していないと開けなくなる
- [Content_Types].xml との対応が崩れる
- ZIPの圧縮方式によっては、Excelが受け付けない
読むのはいい。書くのはライブラリに任せる。 これが安全な線だと思う。
例外は、さきほどの calcChain.xml の削除くらい。あれは「消すだけ」なので、壊しにくい。

実務で使える、5つの場面
まとめて使える形にしておく。
- 画像をまとめて取り出す → 拡張子を zip に変えて解凍、xl/media/ を見る
- 作成者名を消す → ドキュメント検査をかけてから送る
- 非表示シートを確認する → 送る前に、再表示で中身を見る
- 壊れたファイルから数字を拾う → sheet1.xml をテキストで開く
- なぜ重いか調べる → sharedStrings.xml のサイズを見る
どれも、ファイルがフォルダだと知っているだけでできる。
航路 — 見えている表は、いちばん外側だった
整理する。
- .xlsx はZIPファイル。拡張子を zip に変えると開く
- 規格はOffice Open XML(ECMA-376 / ISO/IEC 29500)。公開されている
- sharedStrings.xml が文字列を一元管理している。文字列の種類が多いと重くなる
- xl/media/ に、貼り付けた画像がそのまま入っている
- docProps/core.xml に作成者名が残る。社外に出す前にドキュメント検査
- 非表示シートは隠れていない。見せたくないものは削除する
- 壊れたファイルは、中のXMLから数字だけ救えることがある
- 書き換えはライブラリに任せる。手でいじるのは calcChain.xml の削除まで
いちばん面白かったのは、拡張子を変えるだけで中が見えることだった。
暗号でも、特殊な形式でもない。フォルダをまとめて、名前を変えただけのものだった。
そう分かってからは、Excelファイルの見え方が変わった。画面に出ている表は、いちばん外側の見せ方にすぎない。その下に、テキストのファイルが何枚も重なっている。
そして、そこには見せるつもりのなかったものも入っている。
docxとpptxも、同じ構造
Excelの話をしてきたが、WordもPowerPointも同じ仕組みだ。
- .docx → word/document.xml、word/media/
- .pptx → ppt/slides/slide1.xml、ppt/media/
拡張子をzipに変えれば、同じように開く。
実務でいちばん使えるのは、pptxからの画像取り出しだと思う。提案資料に貼られた図やグラフを、まとめて取り出せる。
そしてdocxの検索。Wordファイルが壊れて開けないとき、word/document.xml をテキストエディタで開けば、タグの隙間に本文が残っている。整形は必要だが、文章そのものは救える。
Officeのファイルは、全部フォルダだった。 一度そう思うと、扱い方が変わる。
「ファイルが大きい」ときに見る順番
構造が分かると、原因の切り分けができる。zipにして開いて、サイズの大きいものから見る。
① xl/media/ が大きい
貼り付けた画像が原因。元の解像度のまま入っていることが多い。スマホで撮った写真を貼ると、1枚数MBになる。
対策は、Excelの「図の圧縮」。図を選んで、書式タブから圧縮する。「この画像だけに適用する」のチェックを外せば、全部にかかる。
② sharedStrings.xml が大きい
文字列の種類が多い。前に書いたとおり。
摘要欄に自由記述が並んでいるようなシートは、ここが膨らむ。コード化できるものはコードにするのが効く。
③ styles.xml が大きい
書式の種類が多すぎる。列全体・行全体に色や罫線を付けたり、他のファイルからコピーを繰り返したりすると、使われていない書式が溜まる。
④ worksheets/sheetN.xml が大きい
セルが多い。ただし、使っていないセルに書式だけ残っていることがある。Ctrl+Endで飛んだ先が、データの終わりよりずっと遠いなら、それが原因。
余分な行と列を削除して保存し直すと、大幅に減ることがある。
⑤ calcChain.xml が大きい
数式が多い。これは仕方ない。値に変換できるものは変換する。
「共有ブック」と共同編集の違い
構造の話のついでに、保存形式に関わるもう一点。
- 共有ブック(古い機能) 同じファイルを複数人が開いて、あとで変更を統合する
- 共同編集(新しい機能) クラウド上のファイルを、同時に編集する
古い共有ブックは、変更履歴をファイルの中に持つので、使っているうちに重くなる。そして競合したときの解決が難しい。テーブルや条件付き書式など、使えない機能も多い。
新しい共同編集は、OneDriveやSharePointに置いたファイルに対して働く。ファイルの実体はクラウドにあり、差分だけをやりとりする。
社内のファイルサーバに置いたxlsxを複数人で開くと、後から開いた人は読み取り専用になる。これは共同編集ではない。「◯◯さんが使用中です」というあれだ。
複数人で同時に触りたいなら、置き場所を変えるしかない。 ファイル形式の問題ではなく、置き場所の問題になる。
バージョン管理を、どうするか
最後に、いちばん困っている人が多そうなところを。
「売上表_最新.xlsx」「売上表_最新2.xlsx」「売上表_本当の最新.xlsx」。
これが生まれる原因は、上書きが怖いからだ。前の状態に戻せないなら、コピーを取っておくしかない。
対策は3つある。
① ファイル名に日付を入れる
売上表_20261014.xlsx のように、YYYYMMDDで入れる。名前順に並べると日付順になる。「最新」という言葉を使わない。
② クラウドのバージョン履歴を使う
OneDriveやSharePointに置けば、過去の版が自動で保存される。「以前のバージョン」から戻せる。コピーを作る必要がなくなる。
③ 元データと加工結果を分ける
元データは触らない。加工は別ファイルか別シートでやる。元が無事なら、やり直せる。
いちばん効くのは③だと思う。壊してはいけないファイルを、作業用と分ける。そうすれば、作業用のほうは何度でも壊していい。
ファイル名が増えていくのは、整理ができていないからではなく、戻せない不安が原因だった。そこを解消するほうが早い。
この記事は、まだ書きかけです
この記事は、公開してから足していく形にしています。調べたことを書いた本文がまず先にあって、あとから「聞き手と話し手の会話」「あとで思い出したこと」「読んだ人から教わった補足」が積もっていきます。
だから、同じURLでも半年後には別のものになっているはずです。もし一度読んだことがある記事なら、下の更新ログだけ見てください。増えたところが分かります。
更新ログ
- 2026-10-14 公開(本文のみ。会話パートはこれから足します)

