DOCM

DOCMファイルとは

マクロ入りの Word 文書。PDF にするのはたいてい目的がそこにあります——マクロは付いていきません。

DOCM とは何か

DOCM はコンテナです。誰か別のものが符号化した流れを、中に収めておく外殻です。 編集のために使われます。

拡張子は .docm、正式名称は Word Macro-Enabled Document です。ただしどちらも、そのファイルが中に何を持てるかほどには多くを語りません。このページの残りは、その中身についての話です。

DOCM はどこから来たのか

Microsoft が 2007 年に公開しました。 仕様は ECMA-376 です。

古さが役に立つのは、ごく実務的な理由からです。形式が古いほど、それを覚える時間が多くのプログラムに与えられてきたということだからです。

仕様は公開されています

仕様書がそのまま公開されているので、中身を推し量るのではなく文書を読んで実装できます。この形式が数多くのプログラムに載っているのはそのためであり、20 年前に書かれたファイルが今も開けるのもそのためです。ただし「仕様が公開されている」ことと「使用料が要らない」ことは別の話です。中でコーデックを包んでいる形式では、特許のライセンスは仕様書が答えていない別の問題として残ります。

1 つのファイルに複数ページを持てます

DOCM ファイルは 1 ページに縛られていません。1 ページしか持てないものへ変換するときには、これが効いてきます。1 回の変換で出てくるのは 1 ページぶんのファイル 1 つで、取られるのは先頭のページです——どのページを取るかを選ばせてくれる変換であれば、そのページになります。

マクロを持てます

DOCM ファイルは実行されるコードを一緒に運べます。そして、この拡張子と関わることになる理由はたいていそこにあります——メールサーバーか、文書提出のポータルに弾かれたのです。マクロを持てない形式へ変換するのがよくある逃げ道で、そのあとマクロが残らないのはご想像のとおりです。

どんな種類の文書か

DOCM の中身はテキスト文書です。段落は、置かれたページに合わせて流れ直します。

これが変換のされ方を決めます。テキストは流れ直すので、ページ数は結果の性質であって、ファイルの性質ではありません。

DOCM を開けるのは何か

Microsoft Wordが読めますし、同じ種類のプログラムならたいてい読めます。

ファイルが開かないとき、形式が悪いことはめったにありません。たいていはプログラムのほうが形式より古いのです。もっと古い形式に変換してしまうのが確実な逃げ道で、このサイトの残りの部分はそのためにあります。

ブラウザーで開く

これを読めるブラウザーはありません。

これを変換するいちばんよくある理由がこれです。形式が悪いのではありません。ファイルを見せたい場所が、それを読めないというだけのことです。

作業のための形式です

DOCM は、開いて手を入れるために作られています。作業が続いているあいだはこの形式でファイルを持ち、完成したものが必要になるたびに、ここから書き出してください。

コードが入っていると自ら告げる文書

DOCM と DOCX は同じ形式です。本文とスタイル、画像を持つ XML の ZIP パッケージで、違いはただ一つ、DOCM は VBA プロジェクトを持てて DOCX は持てないという点です。開く前にそれを分かるようにするために、拡張子が存在しています。

スプレッドシートと違うのは、正当な理由がある頻度です。マクロ入りのワークブックはよくある業務自動化ですが、マクロ入りの「文書」はずっとまれです。フィールドを埋める、手紙を生成する、社内書式を強制するテンプレートは正当なケースであり、流通している DOCM ファイルのうちごく一部にすぎません。

たいていの人は怪しい添付ファイルとして出会います

はっきり言っておく価値があります。マクロ付きの Word 文書は、十年近くにわたって史上もっとも効果的なマルウェアの配信手段でした。請求書、配送票、履歴書、そして「表示するにはマクロを有効にしてください」と主張する文書。

「表示するにはコンテンツを有効にしてください」という文言そのものが手口の目印です。本物の文書はマクロなしで読める必要があり、テキストは XML の中に入っていて、コードが動くかどうかに関わらず Word はそれを描画します。そうでないと主張するファイルは、文書がどう動くかではなく、あなたにさせたいことを説明しているにすぎません。

2022 年に Microsoft が変えたこと

いまの Office はインターネットやメール添付から来た文書のマクロを、有効化ボタンを出すのではなく端から遮断します。Windows はそうしたファイルにゾーンフラグを付け、Word は赤いバナーとその理由を説明するリンクとともにコードを拒否します。

効果は測定可能で、攻撃側の対応も同じでした。ほかのファイル形式への移行です。正当な文書については、ファイルのプロパティでブロックを解除するか、信頼できる場所として設定したフォルダーに置くのが直し方で、どちらもファイルの出所を知っている人が意図的に行う行為です。それがこの仕組みの狙いです。

正当な用途と、それが見つかる場所

レターヘッドを挿入する、データベースからフィールドを埋める、番号付けを強制する、フォームから文書を生成する企業向けテンプレート。特に法律事務所や金融機関はこの種の仕組みに深く投資していて、実際に機能しています。

テンプレートはたいてい DOCM ではなく DOTM ── マクロ有効のテンプレート形式 ── であることに注意してください。狙いはそれを配布することではなく、そこから新しい文書を作り始めることだからです。マクロを持つ完成済みの文書というのは少し奇妙な存在で、なぜそうなのかを疑うのは、疑心暗鬼ではなく正当な問いです。

それを取り除く変換

DOCX として保存すると VBA プロジェクトは破棄され、本文、スタイル、画像、表、ヘッダー、フッター、そのほかすべてが保たれます。Word は先に警告を出します。読むためだけに送られてきた文書には、これが正しい対処で、一秒で済みます。

PDF への変換はさらに踏み込み、最終版としてはこちらのほうが良い答えです。PDF はそもそもコードを実行できず、レイアウトを固定し、たいていの受け手が最初から受け取りたかったものです。マクロ有効のテンプレートに基づいてたまたま存在している文書を送るなら、PDF を書き出すほうが DOCM をそのまま渡すより安全で、相手への配慮にもなります。

実行せずに中を確かめる

.zip に名前を変えてアーカイブとして開いてください。文章と書式は読み取り可能な XML なので、Word にいっさい何も実行させずに文書の中身を確認できます。VBA プロジェクトはバイナリのストリームでそこでは読めませんが、それ自体が情報になります。マクロの塊が大きい文書は、何か大がかりなことをしています。

コードを読むには、Word や LibreOffice の VBA エディタが実行せずに開いてくれます。見覚えのない送り主からの見慣れないファイルについては、もっと単純な助言があります。開かず、送り主に何のためのものか尋ねることです。

送る必要があるときにすること

受け手が本当にその自動化を必要としているか確かめてください。中身だけが必要なら DOCX か PDF を送れば、この問題自体が消えます。相手のメールゲートウェイが隔離する可能性も大きく下がります。多くのゲートウェイは、いまマクロ有効の添付ファイルをそう扱っています。

自動化そのものが目的なら、インターネット由来と印がつかない経路 ── 共有ドライブ、社内の文書ライブラリ、IT が配布するパッケージ ── で送ってください。DOCM をメールで送ってからブロック解除の方法を教えるのは、2022 年の変更がまさに断とうとした習慣を教えているのと同じです。

基本情報

DOCMフォーマットの識別子と出自。
拡張子.docm
メディアタイプapplication/vnd.ms-word.document.macroEnabled.12
公開元Microsoft
初版2007
仕様ECMA-376

DOCM ファイルについてよくある質問

DOCM と DOCX の違いは何ですか

DOCM は VBA マクロを持てて、DOCX は持てないという一点だけが違います。どちらも同じ本文とスタイル、画像を持つ XML の ZIP パッケージです。拡張子を分けているのは、開く前に「コードが入っていると主張しているファイルだ」と分かるようにするためです。

DOCM ファイルを開くのは安全ですか

マクロを無効にして開くのは、ほかの文書と同じくらい安全です。テキストはコードが動かなくても XML から描画されます。危険なのはマクロを有効化する判断のほうで、VBA はファイルシステムとネットワークに全面的にアクセスできます。出所の分かっているファイルだけ有効化してください。

文書が「表示するにはコンテンツを有効にしてください」と言っています。有効にすべきですか

いいえ。その文言は典型的な手口です。本物の文書はマクロなしで読めます。コードが動くかどうかに関わらず Word はテキストを描画するからです。そう主張するファイルは、文書の仕組みではなく、あなたにさせたいことを説明しています。

Word 文書からマクロを取り除くには

DOCX として保存してください。VBA プロジェクトは破棄され、本文、スタイル、画像、表、ヘッダー、フッターはすべて保たれます。Word は事前に警告を出し、その警告自体が操作のすべてです。

メールで受け取ったファイルのマクロを Word がブロックするのはなぜですか

2022 年以降、Office はインターネット由来と印のついたファイルのマクロを、有効化ボタンを出さずに端から拒否するようになりました。正当なファイルについては、ファイルのプロパティでブロックを解除するか、信頼できる場所に置いてください。どちらも出所を知っていることが前提です。

Word を使わずに文書の中身を確かめられますか

.zip に名前を変えてアーカイブとして開いてください。本文と書式は読み取り可能な XML です。マクロはバイナリのストリームとして格納されそこでは読めませんが、そのサイズだけでも文書が何か大がかりなことをしているかどうかが分かります。