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

    Visual Studio Community 2015でOffice開発する。

    「Microsoft、統合開発環境「Visual Studio 201…

  2. Office関連

    シート見出しの右クリックメニューから「コードの表示」を消す方法

    いつもお世話になっている「インストラクターのネタ帳」の管理人である伊藤…

  3. Office関連

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

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

  4. Office関連

    徹底的にSymbol(シンボル)フォントをチェックするWordマクロ

    文字列をメモ帳にコピー&ペーストすると文字化けしたり、フォント指定で検…

  5. Office関連

    [Excel Services ECMAScript]セルにデータを入力する。

    埋め込んだExcelワークブックのセルにデータを入力するコードです。…

コメント

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

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

Time limit is exhausted. Please reload CAPTCHA.

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

Translate

最近の記事

アーカイブ

PAGE TOP