リスト用アウトラインを定義してスタイルとして保存するマクロです。
[新しいリスト スタイルの定義]コマンドからの操作を自動化したものです。ダイアログボックスで各項目を指定するのは複雑で手間もかかるため、一式をマクロにしてしまうというわけです。
リスト用アウトラインの定義については、以下のトピックを参照してください。
ここでは、見出し用のアウトラインの定義、箇条書き用のアウトラインの定義の2つを紹介します。
番号付き見出しのアウトラインを設定するマクロ
このマクロでは、見出し1~4 の段落スタイルに階層付きの連番を設定します。
Sub リストテンプレート設定_見出し()
Const LISTSTY As String = "LS_NumberedTitle"
Dim mySty As Style
Dim myLT As ListTemplate
s_ChkListStyle LISTSTY
Set myLT = ActiveDocument.Styles(LISTSTY).ListTemplate
' 初期化
s_ListTemplateClear myLT
' 個別設定
Set mySty = ActiveDocument.Styles(wdStyleHeading1)
With myLT.ListLevels(1)
.NumberFormat = "第%1章"
.TrailingCharacter = wdTrailingSpace
.NumberStyle = wdListNumberStyleArabic
.TextPosition = mySty.Font.Size
With .Font
.Bold = True
.Color = -671039489
.NameFarEast = mySty.Font.NameFarEast
.Name = "Arial"
End With
.LinkedStyle = mySty
End With
Set mySty = ActiveDocument.Styles(wdStyleHeading2)
With myLT.ListLevels(2)
.NumberFormat = "%1.%2"
.TrailingCharacter = wdTrailingSpace
.NumberStyle = wdListNumberStyleArabic
.TextPosition = mySty.Font.Size * 1.5
With .Font
.Bold = True
.Color = -671039489
.Name = "Arial"
End With
.LinkedStyle = mySty
End With
Set mySty = ActiveDocument.Styles(wdStyleHeading3)
With myLT.ListLevels(3)
.NumberFormat = "%1.%2.%3"
.TrailingCharacter = wdTrailingSpace
.NumberStyle = wdListNumberStyleArabic
.TextPosition = mySty.Font.Size * 1.5
With .Font
.Bold = True
.Color = -671039489
.Name = "Arial"
End With
.LinkedStyle = mySty
End With
Set mySty = ActiveDocument.Styles(wdStyleHeading4)
With myLT.ListLevels(4)
.NumberFormat = "(%4)"
.TrailingCharacter = wdTrailingSpace
.NumberStyle = wdListNumberStyleArabic
.TextPosition = mySty.Font.Size * 1.2
With .Font
.Color = -671039489
.Name = "Arial"
End With
.LinkedStyle = mySty
End With
Set mySty = ActiveDocument.Styles(wdStyleHeading5)
With myLT.ListLevels(5)
.LinkedStyle = mySty
End With
Set mySty = Nothing
Set myLT = Nothing
End Sub
箇条書き段落のアウトラインを設定するマクロ
このマクロでは、段落番号と箇条書きのスタイルに2階層付きの連番を設定します。
Sub リストテンプレート設定_箇条書き()
Const LISTSTY As String = "LS_BulletPara"
Const WID As Single = 20
Dim myLT As ListTemplate
s_ChkListStyle LISTSTY
Set myLT = ActiveDocument.Styles(LISTSTY).ListTemplate
'初期化
s_ListTemplateClear myLT
'個別設定
With myLT.ListLevels(1)
.NumberFormat = "%1."
.TrailingCharacter = wdTrailingTab
.NumberStyle = wdListNumberStyleArabic
.NumberPosition = 0
.TextPosition = WID
.TabPosition = WID
With .Font
.Color = -654278401
.Name = "Arial"
End With
.LinkedStyle = "段落番号"
End With
With myLT.ListLevels(2)
.NumberFormat = ChrW(61548)
.TrailingCharacter = wdTrailingTab
.NumberStyle = wdListNumberStyleBullet
.NumberPosition = 0
.TextPosition = WID
.TabPosition = WID
With .Font
.Color = -654278401
.Name = "Wingdings"
End With
.LinkedStyle = "箇条書き"
End With
With myLT.ListLevels(3)
.NumberFormat = "%3)"
.TrailingCharacter = wdTrailingTab
.NumberStyle = wdListNumberStyleArabic
.NumberPosition = WID
.TextPosition = WID * 2
.TabPosition = WID * 2
With .Font
.Color = -654262273
.Name = "Arial"
End With
.LinkedStyle = "段落番号 2"
End With
With myLT.ListLevels(4)
.NumberFormat = ChrW(61607)
.TrailingCharacter = wdTrailingTab
.NumberStyle = wdListNumberStyleBullet
.NumberPosition = WID
.TextPosition = WID * 2
.TabPosition = WID * 2
With .Font
.Color = -654262273
.Name = "Wingdings"
End With
.LinkedStyle = "箇条書き 2"
End With
Set myLT = Nothing
End Sub
アウトライン設定の初期化サブルーチン
上記の2つのマクロから呼び出される共通のサブルーチンです。
'リストスタイルの確認と作成
Private Sub s_ChkListStyle(sNAME As String)
Dim oSty As Style
On Error Resume Next
Set oSty = ActiveDocument.Styles(sNAME)
If Err.Number <> 0 Then
ActiveDocument.Styles.Add Name:=sNAME, Type:=wdStyleTypeList
Else
Set oSty = Nothing
End If
End Sub
'リストテンプレートの各レベルの設定を初期化
Private Sub s_ListTemplateClear(oLT As ListTemplate)
Dim i As Long
For i = 1 To 9
With oLT.ListLevels(i)
.NumberFormat = ""
.TrailingCharacter = wdTrailingNone
.NumberStyle = wdListNumberStyleNone
.NumberPosition = 0
.Alignment = wdListLevelAlignLeft
.TextPosition = 0
.TabPosition = wdUndefined
.ResetOnHigher = True
.StartAt = 1
With .Font
.Name = ""
.Color = wdUndefined
.Size = wdUndefined
.Bold = wdUndefined
.Italic = wdUndefined
.StrikeThrough = wdUndefined
.Subscript = wdUndefined
.Superscript = wdUndefined
.Shadow = wdUndefined
.Outline = wdUndefined
.Emboss = wdUndefined
.Engrave = wdUndefined
.AllCaps = wdUndefined
.Hidden = wdUndefined
.Underline = wdUndefined
.Animation = wdUndefined
.DoubleStrikeThrough = wdUndefined
End With
.LinkedStyle = ""
End With
Next i
End Sub
解説
リストスタイルの作成
s_ChkListStyle
サブルーチンで、対象のリストスタイルの有無を確認して、ない場合は作成します。
Document.Styles.Add
name:=STYLENAME,
Type:=wdStyleTypeList
リストスタイルの作成はType を wdStyleTypeList
にする以外は、段落スタイルの作成と同様です。
名前は英数字にしましょう。日本語も使えますが、[アウトライン]ボタンから表示される「リストのスタイ ル」をポイントしたときに名前が表示されません。
アウトラインの定義は、リストスタイルとリンクした ListTemplate
オブジェクトで行います。
アウトラインの各レベル定義の初期化
アウトラインの各レベルの定義は、ListTemplate.ListLevels
コレクションの各メンバーの各プロパティで扱います。メンバーは1~9です。
s_ListTemplateClear
サブルーチンで、これらのプロパティを初期化しています。wdUndefined
は「アウトライン専用値の指定なし」になります。例えば、Font.Size
=
wdUndefined
なら、アウトラインが設定された段落の文字サイズと同じになります。
アウトラインの各レベルの定義
アウトラインの各レベルの各プロパティにつき、初期状態から変更したい値だけを定義していきます。
LinkedStyle プロパティ
段落スタイルの種類に応じてアウトラインのレベルを決める場合に指定します。このプロパティが ""
の場合は、段落のインデントでレベルが決まります。