先日のコメント
でごご質問「例えば、Times New Roman, 12pt, 下線なし、囲み文字なし、マーカーなし、といった設定をすることは可能なのでしょうか?」に対する回答です。
前回の記事「【ワイルドカード】文字書式を後から設定する
」では、特定のパターンを見つけ出して書式設定をしました。特定のパターンを検索する必要があったため、[検索と置換]ダイアログボックスを使いました。
今回のご質問のように、書類全体を対象としてフォントの種類や蛍光ペンの解除などをする場合には、全選択して([Ctrl] + [A])から設定する手法を用います。
この考えに基づいてマクロを作成しました。
▼このマクロでできること
以下の設定を一括で行います。
ヘッダー、フッター、テキストボックス等を除く、メイン文書(通常文字を書いている部分)に対して実行します。
蛍光ペン解除
フォント名(日本語:MS明朝、英語:Times New Roman)
フォントサイズ(12ポイント)
太字解除
斜体解除
下線解除
囲み線解除
段落周囲の罫線の解除
▼マクロの解説
関連する項目を1つ1つ設定します。
囲み線についてのみ解説を補足します。
文字に囲み線を設定するには、Borderオブジェクトを用います。文字列を選択して囲み線のボタンをクリックする操作を「マクロの記録」機能で記録してみました。
With Selection.Font.Borders(1)
If .LineStyle = wdLineStyleNone Then
.LineStyle = Options.DefaultBorderLineStyle
.LineWidth = Options.DefaultBorderLineWidth
.Color = Options.DefaultBorderColor
Else
.LineStyle = wdLineStyleNone
End If
End With
ヘルプのBorderオブジェクトの説明は、以下の通りです。
Border オブジェクト (Word)
ここには、以下のように書かれています。
引数 index を使用して罫線を識別して Borders(index) を使用し、単一の Border オブジェクトを取得します。引数 Index に使用できる定数は、WdBorderType
クラスの定数のいずれかです。
Borderは罫線の設定にも用いられるオブジェクトです。これをフォントの囲み線にも使うんですね。
しかし、WdBorderType の定数1が何に対応するのか調べても記載がありません。
困ったときのGoogle頼みで検索してみると、以下の記事が出てきました。
Borders in character and paragraph styles (元Word MVPのShauna Kellyさんのサイト)
この記事によれば、Borderオブジェクトはわかりにくい、とのことでして、文字に対して使われる場合の解説がありました。
結論からすると、文字に対して使うときの引数の値は1です。これで大丈夫。
ちなみに、この記事によると、段落に対しては、5種類(top, left, bottom, right, horizontal)の罫線を設定できるとのことなので、こちらも青文字の通り設定しています。
▼マクロ
Sub 書式を設定する()
With ActiveDocument
'-----------------------------------
'蛍光ペンを解除
'-----------------------------------
.Range.HighlightColorIndex = wdNoHighlight
'-----------------------------------
'文字書式を設定
'-----------------------------------
With .Range.Font
.NameFarEast = "MS 明朝" '日本語フォント
.NameAscii = "Times New Roman" '半角英数字記号のフォント
.NameOther = "Times New Roman" 'ラテン文字などのフォント
.Size = 12 '文字のサイズ
.Bold = False '太字を解除
.Italic = False '斜体を解除
.Underline = wdUnderlineNone '下線を解除
.Borders(1).LineStyle = wdLineStyleNone '囲み線を解除
End With
'-----------------------------------
'段落の周囲の罫線を解除
'-----------------------------------
With .Range.ParagraphFormat
.Borders(wdBorderTop).LineStyle = wdLineStyleNone
.Borders(wdBorderBottom).LineStyle = wdLineStyleNone
.Borders(wdBorderLeft).LineStyle = wdLineStyleNone
.Borders(wdBorderRight).LineStyle = wdLineStyleNone
.Borders(wdBorderHorizontal).LineStyle = wdLineStyleNone
End With
End With
End Sub
▼関連記事
【ワイルドカード】文字書式を後から設定する
Borders in character and paragraph styles (元Word MVPのShauna Kellyさんのサイト)
Border オブジェクト (Word)