【Word VBA】使用中の書式を検出するWordマクロ

2010年7月3日

フォントに書式を使いますね。

たとえば、太字、斜体、などなど。

文書中にそれらの書式が使われているかどうかを確認するマクロです。

どこで役に立つのか?

私は、仕事やプライベートで文書を作成するときに、仮の文書をひとまずつくります。

わからないところは、特定のキーワードをメモ書きしたり、もしくは、下線や蛍光ペンで着色したりして、あとで読み返して直せるようにしておきます。

この方法で大切なのは、完成品でこのようなメモが残らないようにすることです。

いらないメモが残っているとまずいですよね。特に仕事で納品する場合には。

今回紹介するマクロは、このような特定の書式が、文書中に使われているかどうかを一気に確認するものです。

検索をして、以下のようなメッセージを表示します。

文字書式

検索対象

  • 上付き
  • 下付き
  • 太字
  • 斜体
  • 下線(一重線)
  • 取り消し線
  • 蛍光ペン

この7種類です。

プログラム

インデント付きのマクロは、こちらのページ でご覧になれます。


Sub Style_Check()

 Dim myRange As Range
 Dim myStyle(1 To 7) As String
 Dim i As Integer
 Dim myStyleFound As String
 Dim blnStyle As Boolean
 
 myStyle(1) = "下付き"
 myStyle(2) = "上付き"
 myStyle(3) = "太字"
 myStyle(4) = "斜体"
 myStyle(5) = "下線(一重線)"
 myStyle(6) = "取り消し線"
 myStyle(7) = "蛍光ペン"
 
 For i = 1 To 7
 
 Set myRange = ActiveDocument.Range(0, 0)
 
 With myRange.Find
  .Text = ""
  .Forward = True
  
  If i = 1 Then
   .Font.Subscript = True
  ElseIf i = 2 Then
   .Font.Superscript = True
  ElseIf i = 3 Then
   .Font.Bold = True
  ElseIf i = 4 Then
   .Font.Italic = True
  ElseIf i = 5 Then
   .Font.Underline = wdUnderlineSingle
  ElseIf i = 6 Then
   .Font.StrikeThrough = True
  ElseIf i = 7 Then
   .Highlight = True
  End If
  
  .Wrap = wdFindStop
  .Execute
  
  If .Found = True Then
   myStyleFound = myStyleFound & vbCr & myStyle(i)
  End If
 
 End With
 
 Next
 
 Set myRange = Nothing
 
 If Len(myStyleFound) <> 0 Then
  MsgBox "現在の文書で使用されている書式" & vbCr & _
      myStyleFound, vbInformation, "検索結果"
 Else
  MsgBox "見つかりませんでした。", vbExclamation, "検索結果"
 End If

End Sub

プログラム解説

54行 Len関数 (文字列の長さを求める

25行~39行 検索対象の書式を設定しています。

 

▼関連記事

フォントチェック用マクロの目次

コメント

  • 3. Re:引数を省略できません

    新田さん、

    ・・・そういうことですね。了解です。

    リプライありがとうございました。

    ハマの万馬券男返信する
  • 2. Re:引数を省略できません

    >ハマの万馬券男さん

    こんにちは。はじめまして。

    メールをいただいた内容を拝見すると、
    エクセルでこのプログラムをご利用されようと
    しているのでしょうか。

    実は、これはWordのマクロなので、
    エクセルで使うことができません。

    Wordのfindメソッドは、Excelのfindメソッドよりも
    細かく書式を設定できるので、今回のような
    検索が可能になります。

    また、findメソッドの記載方法が異なります。

    Excelの場合には、findメソッドの後に、
    引数を追加していろいろと設定するのです。

    そのために、「引数を省略できません」のメッセージが
    表示されたのかもしれません。

    Excel 2010が手元にないので、細かいことはわかりませんが、
    基本的に、Word のVBAでご利用いただくものと
    ご理解ください。

  • 1. 引数を省略できません

    新田順也さん、こんにちわ。

    > いらないメモが残っているとまずいですよね。特に仕事で納品する場合には。

    はい。私もそう思いまして、このマクロをぜひ参考にさせていただきたいです。
    が、残念ながら、私の環境(*)では、タイトルのようなメッセージができて実行できません。
    (*) Microsoft VB for Appli 7.0
    Excel 2010

    本プログラムについて、動作実績のある実行環境をおしえてもらえませんか?

    ハマの万馬券男

-コード
-, ,