未使用のスタイルの検索(Microsoft Word)
スタイルを作成および管理する機能は、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に適用されます。