Word でたまに手紙を書く程度であれば、Word のスタイルについてはあまり意識しないかもしれません。一方で、スタイルを書式設定のジャングルのように捉えるユーザーもいるかもしれません。スタイルがユーザーを困惑させる主な理由の一つは、スタイルがあまりにも多く、そのほとんどが使われていないことです。スタイルパネルは、操作するスタイルの数を減らすのに役立ちますが、最終的には、完成した文書から未使用のスタイルをすべて削除したい場合もあるでしょう。この記事では、現在の文書で未使用のスタイルをすべて削除する VBA プロシージャを紹介します。ただし、組み込みスタイルは完全に削除できないため、これは未使用のカスタムスタイルがある文書向けのソリューションです。
参照:ソフトウェアインストールポリシー(TechRepublic Premium)
Windows 10 64ビットシステムでMicrosoft 365を使用していますが、以前のバージョンでもご利用いただけます。ご参考までに、デモ用の.docm、.doc、.clsファイルをダウンロードしていただけます。Web版WordはVBAプロシージャをサポートしていません。
Word で使用されていないスタイルを削除する必要があるのはなぜですか?
通常の文書では、ほとんどの人が数種類のスタイルしか使いませんが、基盤となるテンプレートには数十種類の組み込みスタイルが含まれています。カスタマイズしたスタイルを追加すると、状況は手に負えなくなります。文書から使用していないスタイルを削除する理由は3つあります。
- 使用していないカスタムスタイルを多数含む大きなドキュメントでは、パフォーマンスが若干低下する可能性があります。RAMを大量に搭載した今日のシステムではそれほど大きな問題にはなりませんが、使用していないスタイルを削除するという選択肢もあります。
- 多くの人に配布する予定のWord文書では、使用されていないスタイルを削除することをお勧めします。そうすることで、受信者が書式設定を変更しにくくなり、文書全体が台無しになる可能性があります。
- クリーンアップ作業が必要な古いドキュメントのメンテナンスを引き継ぎます。
図Aは、デモ文書のクイックスタイルギャラリーを示しています。「スタイル」グループのダイアログランチャーをクリックすると、さらに多くのスタイルが表示されます。これらは主に、基盤となるテンプレートである「Normal」でサポートされている組み込みスタイルです。一部はカスタムスタイルです。ほとんどの文書では、これらのスタイルのほとんどは使用されません。しかし、これはスタイルの中身を垣間見る機会となります。スタイルは数多く存在し、そのほとんどは組み込みスタイルであるため、削除することはできません。
図A

カスタムスタイルを標準テンプレートに保存すると、使用されていないカスタムスタイルが大量に文書に詰め込まれてしまうのに時間はかかりません。この場合、新しい文書を作成するたびに、大量のスタイルが保存されてしまいます。Word文書で使用されているスタイルの数を素早く確認するには、次の手順に従ってください。
- [スタイル] グループのダイアログ ランチャーをクリックします。
- [スタイル] ウィンドウの下部にある [オプション] をクリックします。
- 表示されるダイアログで、[使用中のスタイルを選択] ドロップダウンから [使用中] を選択します (図 B )。
- [OK]をクリックします。
図B

図C

図Cに示すように、スタイルパネルには現在使用中のスタイルのみが表示されています。なんと7つです!しかし、カスタムスタイルは1つしかありません。未使用のカスタムスタイルをいくつ削除できるのでしょうか?
Wordで手順を入力する方法
スタイルを一つずつ削除するという方法もありますが、それは面倒です。未使用のスタイルを削除するには「置換」コマンドを使うこともできますが、これも一つずつ行う必要があります。どちらの方法を使うにしても、どのスタイルが使用されていないかを把握しておく必要があります。リストAのWord VBAの手順は、置換タスクを模倣しています。念のため、この手順はコピーで実行することをお勧めします。
リストA
Sub DelUnusedStyles()
'Delete all unused styles, except for built-in styles,
'in the current document.
'You can't delete built-in styles.
Dim s As Style
For Each s In ActiveDocument.Styles
'Only execute With if current s isn't a built-in style.
If s.BuiltIn = False Then
With ActiveDocument.Content.Find
.ClearFormatting
.Style = s.NameLocal
.Execute FindText:="", Format:=True
If .Found = False Then s.Delete
End With
End If
Next
End Sub
プロシージャを入力するには、Alt + F11 キーを押して Visual Basic Editor (VBE) を開きます。左側のプロジェクト エクスプローラーで「ThisDocument」を選択し、図 Dに示すようにプロシージャを入力します。コードを手動で入力することも、ダウンロード可能な .cls ファイルをインポートすることもできます。また、マクロはダウンロード可能な .docm、.doc、および .cls ファイルにも含まれています。コードを手動で入力する場合は、この Web ページから貼り付けないでください。代わりに、コードをテキスト エディターにコピーし、そのコードを ThisDocument モジュールに貼り付けてください。これにより、エラーの原因となる可能性のある Web 文字列が削除されます。
図D

リボン版をご利用の場合は、必ずマクロ有効ファイルとしてブックを保存してください。メニュー版をご利用の場合は、この手順を省略できます。
プロシージャを実行するには、「開発」タブをクリックし、「マクロ」グループの「マクロ」をクリックします。図Eに示すダイアログで、 DelUnusedStylesプロシージャを選択し、「実行」をクリックします。このプロシージャはStylesコレクションを循環的に処理し、組み込みスタイルを除くすべての未使用スタイルを削除します。
図E

おそらく、このマクロを実行するためにこれらの手順をすべて実行するのは面倒でしょう。クイックアクセスツールバーまたはカスタムグループに追加することをお勧めします。その方法については、「クイックアクセスツールバーにOfficeマクロを追加してクイックアクセスする方法」をご覧ください。
組み込みスタイルは削除できませんが、先ほど行ったように「推奨」を「使用中」に変更することで、スタイルパネルで使用できるカスタムスタイルの数を減らすことができます。この場合、これらのスタイルは使用中であるため、スタイルパネルには同じリストが表示されます。この手順では、削除されたスタイル(もしあった場合)の数は表示されません。この単純なドキュメントの場合、この手順でスタイルが1つも削除されていない可能性があります。この手順は、複数の人が作業した長くて古いドキュメントに適用することをお勧めします。または、すべてのカスタムスタイルを「標準」に保存すれば、すべてのドキュメントに適用できます。
この手順、あるいはそれに近いタスクは、古くから存在しています。私が考案したわけではありませんが、ニーズに合わせて簡単に調整できます。
WordでのVBA手順の仕組み
DelUnusedStyles プロシージャは理解しやすく、保守も容易です。Word の置換機能を模倣しており、検索文字列としてスタイル名を指定し、置換文字列は空白のままにします。実際、このプロシージャの大部分を記録して改良することも可能です。ただし、記録プロシージャには不要なコードが多く含まれており、明示的な選択を使用しているため、効率が悪いことに気付くでしょう。DelUnusedStyles は簡潔で効率的です。
s 変数をWordスタイルとして宣言した後、For Each構文はStylesコレクション内のすべてのスタイルを循環的に処理します。Built-inプロパティがFalseの場合、つまりスタイルが組み込みスタイルでない場合は、Withブロックで必要な検索プロパティを設定します。
- .ClearFormatting は、以前の検索タスクで使用されたすべての書式を削除します。
- .Style は現在のスタイルの名前に設定されます (s は Styles 変数です)。
- .Execute は、検索文字列にテキストを使用せずにタスクを実行します。
現在のスタイルの.FoundプロパティがFalseの場合、この手順はそれを削除します。この手順は、現在のドキュメント内のすべてのスタイルに対して繰り返し実行されます。
このプロシージャを頻繁に使用する場合は、Personal.xlsb またはクイックアクセスツールバー(QAT)に追加して、すぐにアクセスできるようにしてください。Personal.xlsb の詳細については、「Excel で開いているすべてのブックを閉じる VBA プロシージャを作成する方法」をご覧ください。