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関連

    「いちばんやさしいExcel VBAの教本」レビュー

    VBAの学習者であれば一度は見たことがあるであろう、超有名老舗サイト「…

  2. Excel

    Google TTSで文字列を読み上げるExcelアドイン

    前回の記事で書いたGoogle TTSで文字列を読み上げるマクロ(言語…

  3. Office関連

    Microsoft Graph SDK for PHPを使ったAPIの呼び出しサンプル

    知らない間に(恐らくBuild 2017のタイミングに合わせて)Mic…

  4. Office関連

    IEサポート終了でVBAマクロはどうなるの?

    ※下記情報は2021年5月時点の情報で、今後状況が変わっていく可能性が…

  5. Office関連

    OfficeのコマンドID(コントロールID)リストがGitHubで公開されました。

    前回の記事でも触れていますが、メインストリームサポート期間内のOffi…

コメント

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

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

Time limit is exhausted. Please reload CAPTCHA.

※本ページはプロモーションが含まれています。

Translate

最近の記事

アーカイブ

PAGE TOP