「word vba 取り消し線削除」
という検索で、このサイト・インストラクターのネタ帳へのアクセスがありました。
何を探していらしたのか、判断に迷う検索キーワードです。
文字通りに受け止めれば、取り消し線を削除(取り消し線を解除)するVBA(Visual Basic for Applications)のコード・Wordマクロを探していたように読めます。
そうではなく、取り消し線の設定されている文字列をまとめて削除するコードを探していたのかな、という気もします。
この検索キーワードだけでは判断できませんので、両方をご紹介しておきます。
取り消し線書式を解除するサンプルマクロ
取り消し線書式を解除するのなら、以下のようなマクロです。
ActiveDocument.StoryRanges(wdMainTextStory) _
.Font.StrikeThrough = False
上記のマクロを実行すると、アクティブな文書の取り消し線がすべて解除されます。
ActiveDocument.StoryRanges(wdMainTextStory).Font.StrikeThrough = False
と一行で書けるのですが、ちょっと長いので、取り消し線を設定しているプロパティがわかりやすいように、「 _」(スペース・アンダーバー)で改行を入れました。
FontオブジェクトのStrikeThroughプロパティが、Trueならば取り消し線が設定され、Falseなら解除されます。
ここでは
ActiveDocument.StoryRanges(wdMainTextStory)
で、アクティブな文書の本文全体を表すRangeオブジェクトを取得しておいて、そのFontオブジェクトのStrikeThroughプロパティをFalseにすることで、取り消し線の解除を行っています。
Rangeオブジェクトを使って取り消し線が引かれている文字列を削除するサンプルマクロ
取り消し線が引かれている文字列をまとめて削除するのなら以下のようなマクロです。
With ActiveDocument.Range(0, 0)
.Find.Font.StrikeThrough = True
Do While .Find.Execute
.Delete
Loop
End With
アクティブな文書の先頭を表すRangeオブジェクトを取得して、
With ActiveDocument.Range(0, 0)
検索条件に取り消し線書式を指定して、
.Find.Font.StrikeThrough = True
検索を実行して取り消し線が見つかる限りDo Whileループを回して、
Do While .Find.Execute
みつかったRangeオブジェクトを削除しています。
.Delete
Loop
End With
Selectionオブジェクトを使って取り消し線の引かれている文字列を削除するサンプルマクロ
以下のようなマクロでも、取り消し線書式の設定されている文字列を削除することができます。
ActiveDocument.Range(0, 0).Select
With Selection.Find
.ClearFormatting
.Replacement.ClearFormatting
.Font.StrikeThrough = True
.Text = "*"
.Replacement.Text = ""
.MatchFuzzy = False
.MatchWildcards = True
.Execute Replace:=wdReplaceAll
End With
アクティブな文書の先頭にカーソルを移動しておいてから、
ActiveDocument.Range(0, 0).Select
検索条件・置換条件を指定して、
With Selection.Find
.ClearFormatting
.Replacement.ClearFormatting
.Font.StrikeThrough = True
.Text = "*"
.Replacement.Text = ""
.MatchFuzzy = False
.MatchWildcards = True
すべて置換を実行しています。
.Execute Replace:=wdReplaceAll
先にご紹介したRangeオブジェクト・Do Whileループを使ったマクロはプログラミング経験のある方にわかりやすいのではないかと思います。
後者のSelectionオブジェクトを使ったマクロは、マクロ記録を行うとできるコードを修正して作ったものなので、Wordの置換機能を使い慣れている方にわかりやすいのではないかと思います。
Selectionオブジェクトを使った検索・置換は、Wordの[検索と置換]ダイアログの設定の影響を受けますので、[検索する文字列の書式][置換後の文字列の書式]をクリアしておくのがポイントの一つです。
With Selection.Find
.ClearFormatting
.Replacement.ClearFormatting
Home » ワードマクロ・Word VBAの使い方 » フォント » 取り消し線を解除するWordマクロと、取り消し線が引かれている文字列を削除するWordマクロ