
VBAを使って、ワードのアウトラインを自動的に設定するマクロを紹介します。スタイルを使った書式の設定も自動で行うようにしています。

ワードの書式設定って、インデントが微妙にズレたりして、面倒ですからね。

そうですね。また、このマクロは、マークダウン記法で見出しのレベルを指定できるようになっています。

マークダウン記法って何ですか?

簡単に言うと、各段落の先頭に入力された「#」マークの数で、見出しのレベルを表す文章の表記法です。使ってみてもらえれば、その良さが分かると思います。

なんだか、楽しみですね。
ダウンロード
まずは、こちらからサンプルファイルをダウンロードして、使ってみてください。
ZIPファイルを解凍し、ダウンロードしたWordファイル(マクロ有効テンプレート)をWordのスタートアップ・フォルダにコピーすると、アウトライン設定機能がいつでも使えるようになります。
スタートアップ・フォルダが分からない場合は、こちらをご覧ください

マクロを使用するためには、セキュリティの設定が必要な場合があります。
セキュリティの設定方法が分からない場合は、こちらをご覧ください。

使用方法
- マークダウンを使って、見出しのレベルを指定します。
- 見出し記号には、「#」を使用します。
- Ctrl+Shift+Mを押すとマクロが起動し、次の処理を行います。
- 「MS明朝」「12pt」で裁判文書の様式に沿ったスタイルとアウトラインを設定します。
- マークダウンの見出し記号に応じて、スタイルとアウトラインのレベルを設定します。
- もう一度Ctrl+Shift+Mを押すとマクロが起動し、次の処理を行います。
- スタイルとアウトラインのレベルに応じてマークダウンの見出し記号を入力します。
- スタイルとアウトラインを解除します。
- このファイル自体を開く(エクスプローラーで右クリックして「開く」を選択してください)と、次のことが可能です。
- オプション(見出し記号、フォントサイズ、フォント名)の設定
- 使用方法の確認
- 履歴の確認
- サンプルによる動作確認
作動の一例


マークダウンについては、こちらをお読みください。
このマクロでは、「見出し」の機能だけを使用しています。「改行」、「箇条書き」、「水平線」など、「見出し」以外の機能には対応していませんのでご注意ください。

マークダウンを用いて文書を書くのには、Merryというエディタが便利です。マークダウンした見出しを階層的に表示してくれます。
ワードは、アウトラインを設定すると、ショートカットキーで見出しのレベルの変更などができます。これは、ものすごく便利な機能なので、この機能だけでも使ってみることをお勧めします。
なお、このサンプルは、ワードによる文書作成にVBAを利用する際の参考にしていただくためのものです。
それぞれの法律事務所のやり方に従って、修正を加えて使用してください。

そのまま使うだけでは、ダメなのですか?

それでもかまわないですが、マクロの構造さえ理解できれば、さまざまな設定を自由にカスタマイズできるようになります。ぜひ、挑戦してみてください。
マクロの構造
VBEへの入力位置
テンプレート・ファイルを開いてから、「開発」-「Visual Basic」をクリックして、VBEを起動してください。
(テンプレート・ファイルは、エクスプローラーでダブルクリックするとコードが開かない状態になります。右クリックで「開く」を選択して、テンプレート自体を編集可能状態で開いてください。)

左上の「プロジェクト・エクスプローラー」部で各モジュールをクリックすると、そこに記載されているコードが真ん中の「コード・エディター」部に表示されます。
このマクロのコードは、すべて標準モジュールに記載されています。

ドキュメント・モジュールに、コードを書かないのはなぜですか?

このマクロは、アドインとして、自分以外のドキュメントをコントロールするので、標準モジュールに記載しています。ドキュメント・モジュールにコードを書いてしまうと、他のドキュメントをコントロールすることができません。
マクロの構成
「アウトライン設定」マクロの構成は、次の図のようになっています。

「FormatToggle」のプロシージャの起動は、ショートカットキーにより行っています。「標準」スタイルを設定するショートカットキーが「Ctrl+Shift+N」なので、その隣ということで「Ctrl+Shift+M」に設定しています。この設定は、ワードのオプションで自由に変更できます。
ショートカットキーの設定については、こちらに詳しく記載されています。


ワードでは、イベントプロシージャは使えないのですか?

使えますが、このマクロを起動させるのに適当なものがないので、ショートカットキーを使っています。
各プロシージャの機能
「FormatToggle」プロシージャは、Ctrl+Shift+Mを押すと起動し、アドイン・ワークブックからオプションを読み込んでから、アクティブ・ワークブックの状態に応じて、次の処理を行います。
- アウトラインが設定されている場合
- 最初の「見出しスタイル」からそれ以降の「行頭に空白文字が入力されている行」までの間の段落について、スタイルとアウトラインのレベルに応じた数のマークダウン記号を入力し、標準スタイルを適用します。
- マークダウン記号が入力されている場合
- オプションで設定されたフォントサイズ、フォント名および見出し番号でスタイルとアウトラインを設定します。
- 最初の「マークダウン記号」からそれ以降の「行頭に空白文字が入力されている行」までの間の段落について、マークダウン記号の数に応じたスタイルとアウトラインのレベルを設定し、マークダウン記号を削除します。
- マークダウンもアウトラインも入力・設定されていない場合
- オプションで設定されたフォントサイズ、フォント名および見出し番号でスタイルとアウトラインを設定します。
- すべての段落に標準スタイルを適用します。
「MarkdownToOutline」プロシージャは、マークダウンの見出し記号に応じ、アウトラインとスタイルのレベルを変更します。標準スタイルの段落は、その直前の見出しレベルに応じてインデントを設定します。
「OutlineToMarkdown」プロシージャは、各段落にアウトラインのレベルに応じた数のマークダウンの見出し記号を追記し、標準スタイルに変更します。
「ConfigStyle」は、公用文方式でスタイルを設定します。
「ConfigOutline」は、公用文方式でアウトラインを設定します。2番目以降の見出しからマークダウンの入力を開始した場合(例:#ではなく##で入力を開始した場合)には、インデントの自動補正を行います。
各プロシージャ間の値(オプション値)の共有には、引数を用いています。モジュールレベルの変数でも可能なのですが、エラーが生じる場合があることが確認されたので、引数を用いるように変更しました。
プロシージャ内のコードの細部については、サンプルファイルのプログラムにコメントで記載していますので、そちらを御覧ください。

これを使えば、ワードで文書を作るたびに、書式を設定する手間が省けますね。でも、うちの弁護士が「マークダウン」を使うことはないと思います。

その場合は、アウトラインとスタイルを設定する部分だけを使ってみてはどうですか?

そうですね。それだけでも書式を整えるのが楽になりますね。
このマクロを作成するにあたっては、こちらの記事を参考にさせていただきました。
素晴らしいアイデアを公開していただいたstabucky.com様に感謝申し上げます。
裁判所提出用文書の書式は、こちらを参考にさせていただきました。
コメント
各プロシージャの細部説明を記事から削除し、サンプルファイル内のコードにコメントとして追加しました。
これに伴い、バージョンを2.00から2.01に変更しました。
(マクロの機能には、変更ありません。)
値の共有方法をモジュールレベル変数によるものから引数によるものに変更しました。(エラーが発生する場合があったため)
バージョンを2.10に変更しました。
最初の見出し番号を「第1」としたままでも、「1」から開始できるようにするため、2番目以降の見出しからマークダウンの入力を開始した場合(例:#ではなく##で入力を開始した場合)には、アウトラインに変換する際にインデントの自動補正を行うようにしました。
バージョンを2.20に変更しました。