Office関連

空白文字を一括置換するWordマクロ

様々なWord文書を扱っていると、下図のように“同じ空白のように見えても実は違う文字”に遭遇することがあります。

WordSpace_01_01

今回はそんな空白文字を同じ文字に統一(もしくは削除)するWordマクロを紹介します。

Option Explicit

Public Sub Sample()
  ReplaceSpace 2 '空白文字を全角スペースに置換
  MsgBox "処理が終了しました。", vbInformation + vbSystemModal
End Sub

Public Sub ReplaceSpace(Optional ByVal Opt As Long = 0)
'空白文字置換
'Opt 0:削除 , 1:半角スペース(U+0020)に置換 , 2:全角スペース(U+3000)に置換
  Dim spaces As Variant
  Dim src As String, tgt As String
  Dim i As Long
  
  Select Case Opt
    Case 0: tgt = ""
    Case 1: tgt = ChrW(&H20)
    Case 2: tgt = ChrW(&H3000)
    Case Else
      MsgBox "引数Optには 0 - 2 の値を指定してください。", vbExclamation + vbSystemModal
      Exit Sub
  End Select
  
  '空白文字の定義
  'http://en.wikipedia.org/wiki/Space_%28punctuation%29 参照
  spaces = Array(&H20, _
                 &HA0, _
                 &H1680, _
                 &H180E, _
                 &H2000, _
                 &H2001, _
                 &H2002, _
                 &H2003, _
                 &H2004, _
                 &H2005, _
                 &H2006, _
                 &H2007, _
                 &H2008, _
                 &H2009, _
                 &H200A, _
                 &H200B, _
                 &H200C, _
                 &H200D, _
                 &H202F, _
                 &H205F, _
                 &H2060, _
                 &H3000, _
                 &HFEFF)
  
  src = "["
  For i = LBound(spaces) To UBound(spaces)
    src = src & ChrW(spaces(i))
  Next
  src = src & "]"
  ReplaceStr src, tgt
End Sub

Private Sub ReplaceStr(ByVal SourceString As String, ByVal TargetString As String)
'文字置換
  With ActiveDocument.Content.Find
    .ClearFormatting
    .Text = SourceString
    With .Replacement
      .ClearFormatting
      .Text = TargetString
    End With
    .Forward = True
    .Wrap = wdFindStop
    .Format = False
    .MatchCase = False
    .MatchWholeWord = False
    .MatchByte = False
    .MatchAllWordForms = False
    .MatchSoundsLike = False
    .MatchWildcards = True
    .MatchFuzzy = False
    .Execute Replace:=wdReplaceAll
  End With
End Sub

上記マクロを実行すると、文書の中にある空白文字をすべて全角スペース(U+3000)に置き換えることができます。

WordSpace_01_02

空白文字の処理にお困りの方は是非お試しください。

関連記事

  1. Office関連

    ブラウザで簡単にOfficeドキュメントを確認できる「Office Web ビューアー」

    @seinoro さんのツイート(下記)で知ったサービス「View O…

  2. Office関連

    目次を更新するWordマクロ

    文書の目次を更新するにはTableOfContentsオブジェクトのU…

  3. アイコン一覧

    Office 365アイコン(imageMso)一覧(G)

    Office 365のデスクトップ版Officeアプリケーション(Wo…

  4. Office関連

    Google スライドで新規プレゼンテーションを作成するVBAマクロ

    ここ数日PowerPointのマクロに加え、Google Apps S…

  5. Office関連

    ExcelとPowerPointに自動保存機能が追加されました。

    Excel 2016を使っていて、ふと気が付いたのが画面左上にある「自…

  6. Office関連

    コンテンツコントロールに外部XMLのデータをマップするWordマクロ

    Word 2007で追加された機能「コンテンツコントロール」を使うと外…

コメント

  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

Time limit is exhausted. Please reload CAPTCHA.

最近の記事

アーカイブ

RapidSSL_SEAL-90x50
PAGE TOP