ガイド

壊れた PowerPoint(.pptx)を PowerPoint なしで直す

開かない .pptx は、プレゼン当日の朝に感じるほどの大惨事であることはめったにありません。ファイルの正体は XML が詰まった ZIP にすぎず、PowerPoint がプレゼン全体を拒否していても、スライド・テキスト・画像はたいていその中に無傷のまま収まっているからです。

.pptx の正体は XML が詰まった ZIP

現代の PowerPoint ファイルについて最も役立つ事実は、それが一枚岩の不透明な 塊ではない、ということです。.pptx 形式が登場して以来、プレゼンはZIP アーカイブであり、その中には Microsoft の Office Open XML(OOXML)レイアウトに従った小さな XML ファイルのツリーと、あなたの メディアが収まっています。スライドのテキストは読める XML として保存され、 画像は完全な画像ファイルです。.pptx という拡張子は、実のところ 名前が違うだけの ZIP なのです。

これは1分もかからず自分で確かめられます。コピーを作り、deck.pptx から deck.zip に名前を変えて、任意の アーカイブツールで開いてみてください。中にはこんなものがあります:

  • [Content_Types].xml — パッケージ内のすべてのパーツの種類を 宣言します。
  • _rels/ — 各パーツを互いに結び付ける関係ファイルです。
  • ppt/presentation.xml — プレゼンの骨格とスライドの順序です。
  • ppt/slides/slide1.xmlslide2.xml… — スライド 1枚につき1つの XML ファイルで、そのスライドのテキストとレイアウトを 保持します。
  • ppt/media/ — 埋め込まれた画像・音声・動画で、それぞれ普通の ファイルとして保存されます。

.pptx は ZIP:各スライドは XML パーツ、画像は完全なファイルで、末尾のディレクトリがそのすべてを一覧にしています。ディレクトリが壊れると PowerPoint はつまずきますが、中のパーツは依然として読める状態です。

だからこそ、壊れたプレゼンはたいてい復元できます。損傷は2か所のどちらかに 落ち着きます――パーツを包む ZIP のラッパーか、パーツ内部の XML です。 切り詰められたダウンロードは ZIP ディレクトリを壊しますが、これは通常の アーカイブで 「unexpected end of archive」を 生むのと同じ故障で、その一方でスライド自体は切れ目より前に無傷で収まって います。問題がラッパーにあるときは、それを再構築すればプレゼンが戻って きます。スライドはそもそも壊れていなかったからです。これは壊れた Excel ファイルを復元するときや、壊れた Word 文書の背後にあるのと同じ構造で、3つとも OOXML/ZIP です。

エラー文の正体を読み解く

これらは、人々が検索窓に貼り付ける文字列です。ご自分のものと照合できるよう、 ここに再現しました。最も多いのはこれです:

PowerPoint found a problem with content in [name].pptx. PowerPoint can attempt to repair the presentation.

やらせてみてください。あのダイアログは、PowerPoint が救えるものを救おうと 申し出ているもので、しばしばプレゼンの大部分を取り戻します。その内側では、 パッケージを読み込み、解析できないパーツ(不正な形式のスライド XML か、 壊れた ZIP インデックス)にぶつかり、無事なスライドを見せる代わりに停止した のです。このメッセージそのものの手順については「PowerPoint found a problem with content」を 参照してください。代わりに出会うかもしれない、近い親戚が2つあります:

PowerPoint can't read [name].pptx.

Part of the file is missing or has been changed. (Part: /ppt/presentation.xml)

1つ目は、同じ状態をそっけなく言い表したものです。2つ目は見た目より情報量が あります――失敗した正確なパーツを名指ししており、そのパーツがpresentation.xml そのものではなく1枚のスライドであれば、 プレゼンの残りはまず問題ありません。いずれも、データはおおむね存在していて、 その一部を取り巻く構造だけが壊れている、というサインです。

まずは PowerPoint 自身の修復を試す

PowerPoint がインストールされているなら、その組み込みの修復が正直な第一歩で、 費用もかかりません。PowerPoint を開き、[ファイル]→[開く]と 進んで、ファイルを参照します。シングルクリックで選択し、[開く]ボタンの横に ある小さな矢印をクリックして、[開いて修復する]を選びます。 これはコピーに対して行ってください。失敗しても、次のツールのために元ファイルを 手つかずのまま残せます。

PowerPoint がない場合や、[開いて修復する]が空のプレゼンや独自のエラーを返す 場合は、その下にある ZIP と XML の構造が突破口になります。コピーを.zip に名前変更して開いてみてください。ppt/media/からの画像と、スライド XML からのテキストを手作業で救い出すだけでも、プレゼンを 手動で組み立て直すには十分なことがよくあります。それらのパーツを、きれいに開く 有効なパッケージへと組み立て直す作業こそが面倒なところで、まさにそれを修復ツール が自動化します。普通の解凍ではできない ZIP ディレクトリの再構築も含めてです。

何が復元でき、何が壊れやすいか

壊れたプレゼンからの復元は、オールオアナッシングではありません。原則は構造に 従います――内容が素朴で中心的であるほど、よく生き残ります。

スライドのテキストはよく復元できます。スライド上の言葉は、 それぞれの slideN.xml の中に XML として存在します。それらの パーツが読める状態なら、テキストは忠実に戻ってきます。これは最も重要な内容で あり、最も頑丈でもあります。

画像とメディアもよく復元できます。写真・ロゴ・埋め込みクリップ は、ppt/media/ に普通のファイルとして収まっています。スライドの マークアップとは独立しているため、スライドの XML が生き残らないときでも頻繁に 生き残り、直接取り出せます。

スライドの順序とレイアウトもたいてい復元できます。presentation.xml にあるプレゼンの骨格、スライドマスター、 レイアウトは、存在していればきれいに再構築されます。ZIP のラッパーだけを失った プレゼンは、たいていすべてのスライドが所定の位置に、順序どおりに戻ってきます。

アニメーション・画面切り替え・埋め込みフォントは壊れやすいものです。これらは他のパーツをインデックスで参照するため、周囲の構造が壊れると真っ先に 壊れます。復元したプレゼンは、開始アニメーションが抜け落ちていたり、フォントが システム既定にフォールバックしていたりする状態で開くことがあります――内容は 正しくても、仕上げはやり直しが必要かもしれません。

解析できない1枚のスライドは失われることがあります。特定のslideN.xml が解析できないほど壊れていると、ほかのスライドが開いても、 そのスライドの編集可能な内容は戻らないことがあります。その画像はppt/media/ に別々に残っていることが多いので、それを軸にスライドを 作り直せます。

VBA マクロはしばしば生き残りません。マクロのコードは XML では なく、バイナリパーツ(vbaProject.bin.pptm ファイル内) に存在するため、スライドを救い出すテキストベースの復旧の恩恵を受けません。マクロ が重要なら、見つかる限り古いコピーを残しておいてください。復元したプレゼンが スライドとしては完璧に開くのに、その裏のコードは消えている、ということがあり得る からです。

どんなツールにもできないことが1つあります。そもそも存在しなかったバイトを作り 直すことです。切り詰められたダウンロードがファイルの末尾を届けなかった場合、 その欠けた末尾にあるスライドは壊れているのではなく、存在しないのであって、 元ファイルを再ダウンロードすることだけが、そこへ戻る唯一の道です。

機密のプレゼン資料を、見ず知らずの人のサーバーに置く場所はない

プレゼン資料は、プライバシーが抽象論でなくなる場所です。机の上の壊れたプレゼンは、 未公開の製品ピッチや、取締役会への報告、顧客への提案書であっても不思議では ありません。そして標準的なオンライン修復サービスは、まさにそれを処理のために 自社サーバーへアップロードするよう求めます。ファイルはあなたのマシンを離れ、 あなたの管理外のインフラ上に置かれます。

修復がそのように動かなければならない技術的な理由はありません。同じ ZIP の再構築と XML の組み立て直しは、あなた自身のブラウザ内で、あなた自身の CPU 上で、ファイルが ネットワークを一切渡ることなく実行できます。そうであれば、侵害されたり、保持され たり、召喚状で提出を求められたりするものはサーバー上に何もありません。ファイルが どこにも送られていないからです。機密性の高い資料にとって、その違いこそがすべての 決め手になります。だからこそ、スライドを預ける前に、ツールがファイルをどう扱うかを 確認してください。

よくある質問

PowerPoint なしで壊れた PowerPoint ファイルを復元できますか?

多くの場合、できます。.pptx は XML パーツとメディアパーツからなる ZIP アーカイブなので、スライドのテキストは読める XML として存在し、画像はアーカイブ内の普通の画像ファイルです。修復ツール、いざとなれば ZIP ツールでも、PowerPoint がプレゼンを開くのを拒否していてもそれらのパーツにアクセスできます。再構築した結果を表示するには結局 PowerPoint、Keynote、Google スライドが必要ですが、データを取り出すのに PowerPoint は要りません。

「PowerPoint found a problem with content」とはどういう意味ですか?

これは、PowerPoint がファイルを開いて内部のパーツを読み始め、解析できないもの――壊れた ZIP ディレクトリや不正な形式の XML――にぶつかった、という意味です。無事なスライドを見せる代わりに、プレゼン全体を拒否します。これは症状を伝えているだけで、スライドが失われたと宣言しているわけではありません。パッケージを再構築すれば、XML がまだ整っているスライドと、生き残ったすべての画像がたいてい戻ってきます。そのエラーそのものの手順はこちらの解説を参照してください。

.pptx を .zip に名前を変えるだけでスライドを取り出せますか?

試す価値はありますし、最初の一手としては良い方法です。.pptx は ZIP なので、展開すれば ppt/media/ の画像や ppt/slides/ 以下の XML にあるスライドのテキストに届きます。ただし、壊れているのが ZIP のセントラルディレクトリ(ファイル末尾にある目次)だった場合、普通の解凍はそのまま失敗します。修復ツールは、その壊れたディレクトリを生き残ったエントリから再構築し、PowerPoint が実際に開けるパッケージへと組み立て直します。

すべてのスライドが戻ってきますか?

たいていは大半、あるいはすべてです。XML が整っているスライドと、無傷のメディアファイルはすべて復元できます。特定の slideN.xml そのものが解析できないほど壊れている場合、そのスライドの編集可能な内容は――ほかのスライドが開いても――失われることがありますが、その画像は ppt/media/ に別々に残っていることが多いです。切り詰められたダウンロードがそもそも届けなかったバイトは再現できないので、元ファイルがまだダウンロードできるなら、取得し直すのが最もきれいな解決策です。

PowerPoint のマクロは復元後も残りますか?

多くの場合、残りません。マクロのコードは XML ではなく vbaProject.bin という名前のバイナリパーツ(.pptm ファイル内)に存在するため、スライドを救い出すテキストベースの復旧の恩恵を受けません。復元したプレゼンがスライドとしては完璧に開くのに、その裏にある VBA は消えている、ということが起こり得ます。マクロが重要なら、見つかる限り古いコピーを手元に残しておいてください。

機密のプレゼン資料をオンラインの修復ツールにアップロードしても安全ですか?

それはファイルがどこへ行くか次第です。ほとんどのオンライン修復サービスは、処理のためにあなたのプレゼンを自社サーバーにアップロードします。つまり取締役会向け資料や未公開のピッチが、あなたの管理外のインフラ上に置かれるということです。もしそのツールが代わりにあなた自身のブラウザ内で修復を実行するなら、ファイルはマシンから一切出ず、サーバー上に漏れるものは何もありません。機密性の高い資料を預ける前に、そのツールの仕組みを確認してください。

関連する読み物:壊れた Excel ファイルを復元するときにある同じ ZIP/OOXML 構造と、 その ZIP の故障そのものを扱った「unexpected end of archive」