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

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

VBAを学ぶときの参考資料前のページ

ファイルをBase64エンコード・デコードするVBAマクロ次のページ

関連記事

  1. Office関連

    7-Zipで圧縮・解凍を行うVBAマクロ

    「7-Zip VBA」といったキーワード検索でのアクセスがありました。…

  2. Office関連

    Custom UI Editorの最新版がGitHubで公開されました。

    下記記事等で紹介している、リボンUIをカスタマイズするためのツール「C…

  3. Office関連

    Office製品の開発者用リファレンス(ダウンロード版)

    Docs.comでまとめていたリンクなんですが、来月15日にすべて廃止…

  4. Office関連

    Office製品のヘルプをHTML形式で閲覧する。

    「Word2013 VBA の日本語ヘルプ」で回答した通り、Offic…

  5. Office関連

    Excel Services JavaScript APIを試してみました(1)

    前回の記事で紹介した「ExcelMashup.com」、このサイトによ…

コメント

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

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

Time limit is exhausted. Please reload CAPTCHA.

Translate

Chinese (Simplified)Chinese (Traditional)EnglishFrenchGermanJapaneseKoreanRussianSpanish

最近の記事

アーカイブ

PAGE TOP