Office バイナリ ファイル形式の理解

概要: バイナリ ファイル形式の使用法、バイナリ ファイル形式の基本構造、およびプログラムによるバイナリ ファイル形式の操作に関する主要概念を含め、現在と以前の Microsoft Office 製品で使用されるバイナリ ファイル形式について説明します。

適用対象: Excel 2010 | Office 2007 | Office 2010 | Office client | Open XML | PowerPoint 2010 | SharePoint Server 2010 | VBA | Word 2010

この記事の内容
バイナリ ファイル形式とは
バイナリ ファイル形式のファイルを使用する Microsoft Office のバージョン
Microsoft Office バイナリ ファイル形式ベースのファイルの内容の表示
まとめ
その他の技術情報

公開:   2011 年 2 月

提供元:   Microsoft Corporation

目次

  • バイナリ ファイル形式とは

  • バイナリ ファイル形式のファイルを使用する Microsoft Office のバージョン

  • Microsoft Office バイナリ ファイル形式ベースのファイルの内容の表示

  • カスタムのバイナリ ファイル形式ビューアーの作成

  • Office バイナリファイル形式ベースのファイルの編集

  • まとめ

  • その他の技術情報

この記事は、Microsoft Office 製品で使用されるバイナリ ファイル形式について紹介する記事シリーズの最初の記事です。この 1 番目の記事では、Microsoft Office バイナリ ファイル形式を一般的に操作する方法の概要、共有される構造上のいくつかの特徴、および各種形式に共通する主要概念について説明します。シリーズ内の他の記事では、個々のファイル形式についてより詳細に説明します。これらの記事は、MSDN で入手できる Office File Format Documents と組み合わせて使用するように設計されています。

この記事シリーズでは、Microsoft Office 製品の核となる 4 つの製品である Microsoft Word、Microsoft PowerPoint、Microsoft Excel、および Microsoft Outlook についてのみ説明します。

バイナリ ファイル形式とは

主としてバイナリ データが含まれるあらゆるファイル形式が "バイナリ ファイル形式" です。これには、コンパイルされたプログラム ファイル、イメージ ファイル、メディア ファイル、ほとんどの圧縮ファイルのほか、テキスト情報が含まれる場合のあるファイルのうちバイナリ データとして保管されるファイルが含まれます。Microsoft Office 製品で使用されるバイナリ ファイル形式は、この最後のカテゴリに当てはまります。バイナリ以外の形式には、テキスト (.txt), .html, .xml、これらの派生物、および解釈されたスクリプトとソースコード ファイルが含まれる場合があります。

Microsoft Office バイナリ ファイル形式のすべてのファイル データは 1 つ以上のストリーム内に存在します。各ストリームには、ユーザーおよびシステムの情報、ファイルのプロパティ、書式設定情報、テキストの内容、メディアの内容など、メタデータを格納するためのデータ構造が含まれます。これらのデータ構造は 16 進数のグループとして表わされます。この 16 進数のグループは、ホストプログラムによって解釈され、ホスト プログラムのユーザー インターフェイス経由で表示されます。

一方、データ構造の構成はストリーム内で変化します。最も一般的なデータ単位は、レコードです。通常、レコードには、ファイルに関するいくつかのメタデータがフィールドとフラグの形式で含まれます。これには、他の関連レコードまたは他のデータの位置を示す 1 つ以上のオフセット値が含まれます。テキストは、ANSI または Unicode 文字を表す数値として格納されます。イメージは、外部ファイルへのポインターとし格納できるほか, .gif, .jpeg, .png など、独自のバイナリ ファイル形式での埋め込みイメージとしてファイル内に格納できます。PowerPoint の画面切り替えなど、よりアクティブなコンテンツは、切り替えプロパティなど、解釈に必要な情報でマーク付けされ、その後、ホスト プログラムによってレンダリングされます。

Microsoft Word、Microsoft PowerPoint、Microsoft Excel、および Microsoft Outlook で使用されるファイル形式はすべて、Open Specifications/Data Portability/Microsoft Office File Formats/Microsoft Office File Format Documents の場所にある MSDN ライブラリで包括的にドキュメント化されています。ここから、ファイル形式の完全な仕様を MSDN サイトで直接開くか, .pdf ファイルとして開くことができます。

注意

Microsoft Office では、ほとんどのプログラミング タスクの実行方法として、Office プライマリ相互運用機能アセンブリを使用することをお勧めします。これは、Microsoft Office で作業するための完全なオブジェクト モデルを提供する一連の .NET クラスです。この一連の記事では、Microsoft Office がインストールされない場所など、高度なシナリオについてのみ説明します。

バイナリ ファイル形式のファイルを使用する Microsoft Office のバージョン

この記事で説明されている Microsoft Office バイナリ ファイル形式は、Microsoft Outlook、Microsoft Excel、および以前のバージョンの Microsoft Word と Microsoft PowerPoint で主として使用されます。Microsoft Office Word 2007 と Office PowerPoint 2007 では、XML ベースのファイル形式が既定のファイル形式として使用されます。また、Microsoft Excel 2010 では、より新しいバイナリ形式が使用されます。次の表に、Word、Excel、PowerPoint、および Outlook の特定のバージョンに適用されるバイナリ ファイル形式のファイルを示します。

ファイル形式

アプリケーションのバージョン

MS-DOC

  • Microsoft Word 97

  • Microsoft Word 2000

  • Microsoft Word 2002

  • Microsoft Office Word 2003

MS-PPT

  • Microsoft PowerPoint 97

  • Microsoft PowerPoint 2000

  • Microsoft PowerPoint 2002

  • Microsoft Office PowerPoint 2003

MS-PST

  • Microsoft Outlook 2000

  • Microsoft Outlook 2002

  • Microsoft Office Outlook 2003

  • Microsoft Office Outlook 2007

  • Microsoft Outlook 2010

MS-XLS

  • Microsoft Excel 97

  • Microsoft Excel 2000

  • Microsoft Excel 2002

  • Microsoft Office Excel 2003

MS-XLSB

  • Microsoft Office Excel 2007

Microsoft Office バイナリ ファイル形式ベースのファイルは、元のホスト アプリケーションを使用しないで Microsoft Office ファイルを操作する企業でも使用されます。Microsoft 以外でのより一般的な使用方法として、カスタムのクロス ドキュメント検索ツール、破損したファイルからのデータの復元、他のアプリケーションとの互換性を確保するための読み書きが含まれます。

Microsoft Office バイナリ ファイル形式ベースのファイルの内容の表示

Microsoft Office バイナリ ファイルを表示するための 1 番簡単な方法は、そのファイルを作成したホスト プログラムを使用することです。たとえば、Word を使用して .doc ファイルを表示したり、PowerPoint を使用して .ppt ファイルを表示したりします。この方法では、テキスト、書式設定、ユーザー インターフェイスの一般的な状態など、内容のユーザー ビューが表示されます。

Office ビジュアライザー ツールの offvis.exe を使用すると、バイナリ ファイルのより構造的なイメージを取得できます。http://download.microsoft.com/download/1/2/7/127BA59A-4FE1-4ACD-BA47-513CEEF85A85/OffVis.zip (英語) のリンクをクリックすると、ダウンロード センターからこのツールを直接ダウンロードできます。任意の Microsoft Office バイナリ ファイルをビジュアライザーに読み込むと、2 つのウィンドウが表示されます。ナビゲーション ウィンドウには、生ファイルの内容が表示されます。各行には、現在のオフセット、16 進数のチェーン、およびそのテキスト表現 (ある場合) が表示されます。結果ウィンドウには、現在のデータ構造の名前、その値、オフセットの位置、サイズ、および種類を含む解析結果が表示されます。次のスクリーン ショットには、テキスト "Hello, world" が含まれる .doc ファイルの一部がビジュアライザーに表示されています。文字の "w" が選択されています。これによって、ビジュアライザーは対応する 16 進数とデータ構造を強調表示します。

図 1. offvis.exe でレンダリングされた HelloWorld.doc

Office ビジュアライザー

カスタムのバイナリ ファイル形式ビューアーの作成

カスタム ビューアーを作成できます。カスタム ビューアーを使用して特定のコンテンツを対象としたり、ファイル形式に習熟するための方法としてカスタム ビューアーを使用したりできます。ビューアーでは、データ ストリームの読み取りや、データ ストリーム内の構造の解釈ができる必要があるほか、表示するテキストおよび他のコンテンツを検索するためにオフセット内を移動できる必要があります。これらのデータ構造はファイルの種類ごとに異なりますが、すべての場合で、プロセスは似ています。

バイナリ ファイル形式ベースのファイルの内容を検索するには

  1. ファイル ストリームを読み取ります。

  2. 探している内容が含まれている可能性がある構造を特定します。

  3. 最初の構造で、探している、次のセクションの位置を指定するオフセット値を見つけます。

  4. ストリーム内のそのセクションに移動します。

  5. 必要な内容が見つかるまで、前の 2 つの手順を繰り返します。

  6. 内容を読み取って解析します。

ニーズによって、これにより処理される行は、簡単なテキスト抽出器の場合で 100 行未満のコードから、元のホスト プログラムをエミュレートする場合で数百万行にいたる可能性があります。

Office バイナリファイル形式ベースのファイルの編集

一般に、Microsoft Office バイナリ ファイルは直接編集しないでください。代わりに、[保存] 操作を使用します。この操作は、ドキュメントをプリンターに送信する方法に似ています。たとえば、Word ドキュメントを印刷する場合, .doc ファイル全体をプリンターに送信してレンダリングすることはありません。代わりに、Word によってドキュメントのスナップショットが作成されます。このスナップショットは、プリンターの仕様に応じて書式設定されます。プリンターにフォントを解釈するロジックが含まれる場合がありますが、すべてのレイアウト情報は送信元のアプリケーションで処理されます。

同様に、ファイルをバイナリ形式で保存すると、ホスト アプリケーションがメモリ内のデータを、指定されたバイナリ形式に変換してファイルを作成します。同じ名前のファイルが既に存在する場合、新しいファイルでそのファイルは上書きされます。

この方法にはいくつかの利点があります。

  • アプリケーションは、選択された任意の形式でファイルの内容を保管および操作できます。これは、バイナリ データを直接操作するよりも操作が大幅に簡単になります。

  • 元のバイナリ ファイルをメモリに読み取り、その直後にデータを内部表現に変換することで、編集のたびに変わる場合のあるさまざまなオフセット位置への複数のポインターを再計算する必要がなくなります。

  • アプリケーションはファイルの内部表現をメモリに含めると、そのファイルをアプリケーションがサポートする任意の形式で保存できます。

  • 共有の内部表現を使用すると、複数のファイル形式を読み取るロジックをアプリケーションに組み込み、それらのファイル形式を同じ方法で操作できます。

したがって、バイナリ形式のファイルを編集するプロセスは、実際に 3 つの手順となります。

バイナリ ファイル形式ベースのファイルを編集するには

  1. ファイルを内部表現に読み取ります。

  2. 内部表現をアプリケーションで編集します。

  3. ソース ファイルと同じファイル名と場所を使用して、表現をバイナリ形式で保存します。

まとめ

バイナリ ファイル形式を理解して操作することは困難な作業になる可能性があります。できれば、基本構造を習得し、この記事シリーズで提供されるいくつかの手順を試みることが望まれます。これにより、オープン仕様のドキュメントとダウンロード可能ないくつかのツールのみで、より複雑な実装をいつでも探求することができます。

その他の技術情報

詳細については、次のリソースを参照してください。