【Word VBA】英文チェック用 シングルスペースに変換する

2011年12月20日

先日のセミナー にて、ダブルスペースをシングルスペースに変換するマクロの作成をご依頼いただきました。

こういうニーズってありますね。

このマクロでできること

ピリオド、?、!の後に2つ以上スペースがあり、その後、半角英数字が記載されていた場合、このスペースを1つにします。

マクロの解説

ワイルドカードを用いた置換を実行しています。

ワイルドカードでは、半角の?と!は役割を持っていますので、?と!そのものを検索するために、\?、\!としました。

マクロ


Sub シングルスペース化()

 Dim myRange As Range
 Set myRange = ActiveDocument.Range(0, 0)

 With myRange.Find
  .Text = ".[ ]{2,}([a-zA-Z0-9])"
  .Replacement.Text = ". \1"
  .Replacement.Highlight = True
  .Forward = True
  .Format = True
  .MatchWildcards = True
  .Execute Replace:=wdReplaceAll
 End With

 With myRange.Find
  .Text = "\?[ ]{2,}([a-zA-Z0-9])"
  .Replacement.Text = "? \1"
  .Replacement.Highlight = True
  .Forward = True
  .Format = True
  .MatchWildcards = True
  .Execute Replace:=wdReplaceAll
 End With

 With myRange.Find
  .Text = "\![ ]{2,}([a-zA-Z0-9])"
  .Replacement.Text = "! \1"
  .Replacement.Highlight = True
  .Forward = True
  .Format = True
  .MatchWildcards = True
  .Execute Replace:=wdReplaceAll
 End With

 Set myRange = Nothing

End Sub

 

コメント

  • 2. Re:文章の後ろのスペース文字について

    H. C. Shinopyさん、

    コメントをどうもありがとうございます。

    おっしゃるとおり、直接話法の文章の場合には、一工夫がいりますね。ご指摘をありがとうございます。

    今回のマクロでは、通常の文章のみを対象にしておりました。

    文末のスペースの数ですが、おかしな点というのは、スペース1つの記載がおかしいということでしょうか。

    これ、どちらのスタイルもあるみたいですよ。

    私も、スペースは2つ入れるものだと思っていましたが、友人から教えてもらいました。

    先日のセミナーの受講生の方が必要とされていたので、ニーズ自体はあると思います。

    お客さんの仕様によっては、スペースを1つにするというところもあるようです(友人が勤務していた会社の方針がそうでした)。

    スタイルガイドとして比較的有名な「The Chicago Manual of Style」では、スペース1つというスタイルを提案しているようです(かつての職場で確認しました。ただ、うろ覚えです)。

    お客様のご要望によって使い分けがされているようですね。どちらのスタイルもありではないかと思います。

    ただ、私は普段の技術翻訳ではスペースを2つ入れており、特に変更の要請をうけたことがありません。

    また、スペースの数については細かく検証したことがありませんので、その点はご了承ください。

    なお、「シングルスペース」、「ダブルスペース」については、行間のことを示す言葉のようです。

    誤用してしまいました。失礼いたしました。

  • 1. 文章の後ろのスペース文字について

    いつも参考にしております。

    欧文の場合、文章を打った後はスペースを2文字打つことになっています。
    3文字以上のスペースを2文字にするニーズはあると思いますが、何かおかしくないですか?
    それから、直接話法の文章の場合、文章の末尾は「"」(引用符)になります。(この後ろにスペース2文字を打ちます。)

    H. C. Shinopy

-コード
-,