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

    Office 2007のサポートが2017年10月10日に終了します。

    2007年1月にパッケージ版が発売されてから早10年、長らく活躍してき…

  2. Office関連

    Wordマクロで文字数を取得する方法をまとめてみました。

    「蛍光ペンでマークした部分の文字数をカウントするWordマクロ」で蛍光…

  3. Office関連

    【2018年9月版】Microsoft Office関連の公式リンクまとめ

    Ignite 2018やOffice 2019のリリースがあり、Off…

  4. アイコン一覧

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

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

  5. Office関連

    Wordの自動実行マクロ

    たまたま使用する機会があったのでメモ書き程度に情報を残しておきます。…

  6. Office関連

    [Wordマクロ]PrintOutメソッド実行時に「型が一致しません」との実行時エラーが発生する。

    Wordマクロで文書を印刷するときはPrintOutメソッドをよく使い…

コメント

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

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

Time limit is exhausted. Please reload CAPTCHA.

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

Translate

最近の記事

アーカイブ

PAGE TOP