Home » ワードマクロ・Word VBAの使い方 » フォント » 取り消し線を解除するWordマクロと、取り消し線が引かれている文字列を削除するWordマクロ

取り消し線を解除するWordマクロと、取り消し線が引かれている文字列を削除するWordマクロ

対象:Word2007, Word2010, Word2013

「word vba 取り消し線削除」
という検索で、このサイト・インストラクターのネタ帳へのアクセスがありました。

何を探していらしたのか、判断に迷う検索キーワードです。

文字通りに受け止めれば、取り消し線を削除(取り消し線を解除)するVBA(Visual Basic for Applications)のコード・Wordマクロを探していたように読めます。

そうではなく、取り消し線の設定されている文字列をまとめて削除するコードを探していたのかな、という気もします。

この検索キーワードだけでは判断できませんので、両方をご紹介しておきます。

[スポンサードリンク]

取り消し線書式を解除するサンプルマクロ

取り消し線書式を解除するのなら、以下のようなマクロです。

Sub 取り消し線を解除する()

 ActiveDocument.StoryRanges(wdMainTextStory) _
  .Font.StrikeThrough = False

End Sub

上記のマクロを実行すると、アクティブな文書の取り消し線がすべて解除されます。

ActiveDocument.StoryRanges(wdMainTextStory).Font.StrikeThrough = False
と一行で書けるのですが、ちょっと長いので、取り消し線を設定しているプロパティがわかりやすいように、「 _」(スペース・アンダーバー)で改行を入れました。

FontオブジェクトのStrikeThroughプロパティが、Trueならば取り消し線が設定され、Falseなら解除されます。

ここでは
 ActiveDocument.StoryRanges(wdMainTextStory)
で、アクティブな文書の本文全体を表すRangeオブジェクトを取得しておいて、そのFontオブジェクトのStrikeThroughプロパティをFalseにすることで、取り消し線の解除を行っています。

Rangeオブジェクトを使って取り消し線が引かれている文字列を削除するサンプルマクロ

取り消し線が引かれている文字列をまとめて削除するのなら以下のようなマクロです。

Sub 取り消し線の設定されている文字列を削除する_Range()

 With ActiveDocument.Range(0, 0)
  .Find.Font.StrikeThrough = True
  Do While .Find.Execute
   .Delete
  Loop
 End With

End Sub

アクティブな文書の先頭を表すRangeオブジェクトを取得して、
 With ActiveDocument.Range(0, 0)

検索条件に取り消し線書式を指定して、
  .Find.Font.StrikeThrough = True

検索を実行して取り消し線が見つかる限りDo Whileループを回して、
  Do While .Find.Execute

みつかったRangeオブジェクトを削除しています。
   .Delete
  Loop
 End With

Selectionオブジェクトを使って取り消し線の引かれている文字列を削除するサンプルマクロ

以下のようなマクロでも、取り消し線書式の設定されている文字列を削除することができます。

Sub 取り消し線の設定されている文字列を削除する_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

End Sub

アクティブな文書の先頭にカーソルを移動しておいてから、
 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マクロ

Copyright © インストラクターのネタ帳 All Rights Reserved.

.