スタイルを作成および管理する機能は、Wordの強力な機能の1つです。スタイルを使用すると、ドキュメント全体に一貫した書式をすばやく簡単に適用し、必要に応じてその書式を更新できます。

Wordには、かなりの数の組み込み(事前定義)スタイルが用意されており、必要に応じてさらに追加できます。いつか、ドキュメントで使用されていないスタイルを特定したい場合があります。次に、このリストを使用して、不要になったという理由だけで、簡単に削除できるスタイルを決定できます。

Wordで未使用のスタイルリストを作成する本質的な方法はありません。

代わりに、あなたはあなたのために仕事をするためにマクロを作成する必要があります。このようなマクロを作成することは、Wordが使用していると信じているスタイルを調べ、それらを定義されているスタイルと比較するという簡単な作業だと思うかもしれません。このアプローチの問題は、VBAのInUseプロパティ(Styleオブジェクトに適用される)がいくつかの目的で使用されることです。 InUseプロパティの正式な定義は、次の2つの条件のいずれかが満たされた場合にTrueになるというものです。

  • スタイルは、ドキュメントで変更または適用された組み込みスタイルです。

  • スタイルは、ドキュメントで作成されたユーザー定義のスタイルです。

つまり、InUseプロパティは、スタイルがドキュメントで実際に使用されているかどうかを示しません。実際にスタイルを適用せずにスタイルの定義に何かを行うことができ、実際にスタイルを使用しているドキュメントにテキストがない場合でも、そのスタイルには「使用中」のフラグが付けられます。

ただし、マクロでInBuiltプロパティとInUseプロパティの両方を使用して、使用されていないスタイルのリストを生成することは可能です。次のVBAマクロはこのアプローチを使用します:

Sub CreateStyleList()

Dim docThis As Document     Dim styItem As Style     Dim sBuiltIn(499) As String     Dim iStyBICount As Integer     Dim sUserDef(499) As String     Dim iStyUDCount As Integer     Dim sInUse(499) As String     Dim iStyIUCount As Integer     Dim iParCount As Integer     Dim J As Integer, K As Integer     Dim sParStyle As String     Dim bInUse As Boolean          ' Ref the active document     Set docThis = ActiveDocument          ' Collect all styles being used     iStyIUCount = 0     iParCount = docThis.Paragraphs.Count     iParOut = 0     For J = 1 To iParCount         sParStyle = docThis.Paragraphs(J).Style         For K = 1 To iStyIUCount             If sParStyle = sInUse(K) Then Exit For         Next K         If K = iStyIUCount + 1 Then             iStyIUCount = K             sInUse(iStyIUCount) = sParStyle         End If     Next J          iStyBICount = 0     iStyUDCount = 0     ' Check out styles that are "in use"

For Each styItem In docThis.Styles         'see if in those being used         bInUse = False         For J = 1 To iStyIUCount             If styItem.NameLocal = sInUse(J) Then bInUse = True         Next J         'Add to those not in use         If Not bInUse Then             If styItem.BuiltIn Then                 iStyBICount = iStyBICount + 1                 sBuiltIn(iStyBICount) = styItem.NameLocal             Else                 iStyUDCount = iStyUDCount + 1                 sUserDef(iStyUDCount) = styItem.NameLocal             End If         End If     Next styItem          'Now create the output document     Documents.Add          Selection.TypeText "Styles In Use"

Selection.TypeParagraph     For J = 1 To iStyIUCount         Selection.TypeText sInUse(J)

Selection.TypeParagraph     Next J     Selection.TypeParagraph     Selection.TypeParagraph          Selection.TypeText "Built-in Styles Not In Use"

Selection.TypeParagraph     For J = 1 To iStyIUCount         Selection.TypeText sBuiltIn(J)

Selection.TypeParagraph     Next J     Selection.TypeParagraph     Selection.TypeParagraph          Selection.TypeText "User-defined Styles Not In Use"

Selection.TypeParagraph     For J = 1 To iStyIUCount         Selection.TypeText sUserDef(J)

Selection.TypeParagraph     Next J     Selection.TypeParagraph     Selection.TypeParagraph End Sub

マクロは最初にドキュメント内のすべての段落を調べて、ドキュメントで実際に使用されているスタイルの名前を判別します。この情報はsInUse配列に格納されます。次に、マクロは、Wordが使用していると考えるリストの検索を開始します。これらは、Stylesコレクションに属するスタイルです。スタイルがsInUse配列にない場合は、sBuiltIn配列(組み込みスタイルの場合)またはsUserDef配列(ユーザー定義スタイルの場合)のいずれかに追加されます。比較が完了すると、結果を一覧表示する新しいドキュメントが作成されます。

注:

このページ(または_WordTips_サイトの他のページ)で説明されているマクロの使用方法を知りたい場合は、役立つ情報を含む特別なページを用意しました。

_WordTips_は、費用効果の高いMicrosoftWordトレーニングのソースです。

(Microsoft Wordは、世界で最も人気のあるワードプロセッシングソフトウェアです。)このヒント(1488)は、Microsoft Word 97、2000、2002、および2003に適用されます。