様々なWord文書を扱っていると、下図のように“同じ空白のように見えても実は違う文字”に遭遇することがあります。
今回はそんな空白文字を同じ文字に統一(もしくは削除)するWordマクロを紹介します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 | 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 '空白文字の定義 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)に置き換えることができます。
空白文字の処理にお困りの方は是非お試しください。
この記事へのコメントはありません。