Quantcast
Channel: みんなのワードマクロ
Viewing all articles
Browse latest Browse all 496

【Wordマクロ】全角文字を検索する(Symbolフォントを除外)

$
0
0

先日いただいたコメントへの回答です。

以前紹介しました「文書中の全角文字を数えて検索するマクロ」では、Symbolフォントも検索されてしまいます。

Symbolフォントを除外して全角文字を探してみます。


▼このマクロでできること

カーソルのあるストーリー内において、カーソル以降の全角文字と思われるものを検索し、見つかった場合に選択します。ストーリーの末尾になったら、文書の先頭から検索を開始します。

Symbolフォントは、検索対象から除外します。


▼マクロの解説

赤文字部分で、全角文字1文字を検索しています。

  .Text = "[! -~^9^11^12^13^14]"

「全角文字」としていますが、かなり簡略化した記載です。ここで定義しているのは、「文書中の全角文字を数えて検索するマクロ」で紹介したとおり、半角文字( -~)と編集記号(^9^11^12^13^14)以外を探しています。


半角文字を見つけた場合に、青文字部分にあるように、フォント名を確認しています。
Symbolフォントだった場合には、選択を解除して別の文字を探すようになっています。

   myRange.Select
   If Dialogs(wdDialogInsertSymbol).Font = "Symbol" Then


Dialogs(wdDialogInsertSymbol) は、[記号と特殊文字]の挿入用のダイアログボックスを示しています。

このダイアログボックスを開くとわかりますが、「現在選択されている文字列の先頭の1文字」の情報を表示するんですね。





そんなわけで、フォント名を確認する場合には、検索対象を1文字にしているのです。

myRange.Select で選択してから、このダイアログボックスでフォント名を確認しています。

Rangeオブジェクト内のフォント情報を表示できません。Selectionオブジェクトのフォント情報になります。


このマクロはかなり簡易的なものです。

半角文字が選択されてしまたら、その文字列を検索対象から除外するか、フォント名で除外するかしてみてください。



▼マクロ

Sub 全角文字の検索()

 'シンボルフォントを除外
 Dim myRange As Range
 
 Set myRange = Selection.Range
 
 With myRange.Find
  .Text = "[! -~^9^11^12^13^14]"
  .Replacement.Text = ""
  .Forward = True
  .Wrap = wdFindContinue
  .Format = False
  .MatchCase = False
  .MatchWholeWord = False
  .MatchByte = False
  .MatchAllWordForms = False
  .MatchSoundsLike = False
  .MatchFuzzy = False
  .MatchWildcards = True
  Do While .Execute = True
   myRange.Select
   If Dialogs(wdDialogInsertSymbol).Font = "Symbol" Then

    myRange.Collapse wdCollapseEnd
   Else
    Exit Do
   End If
  Loop
 End With

 Set myRange = Nothing
 
End Sub


▼関連記事

文書中の全角文字を数えて検索するマクロ




Viewing all articles
Browse latest Browse all 496

Trending Articles