リサは、ドキュメントのすべての段落の最後の2つの単語を見つけて、それらの単語間のスペースを改行しないスペースに置き換える方法を必要としています。彼女は、これが検索と置換を使用して可能かどうか疑問に思います。

マクロを使用せずにこれを行う最も簡単な方法は、検索と置換のワイルドカード機能に依存することです。これを行うための鍵は、見つけたものの最後の2つの単語を実際に識別する必要はないことを覚えておくことです。必要なのは、前のスペースで最後の単語を識別することだけです。次の手順に従ってください:

。 Ctrl + Hを押します。 Wordは、[検索と置換]ダイアログボックスの[置換]タブを表示します。

。表示されている場合は、[その他]ボタンをクリックします。 (図1を参照)

。 [ワイルドカードを使用する]チェックボックスをオンにします。

。 [検索する文字列]ボックスに、次のように入力します:()([0-9A-Za-z〜-] \ {1、})([。\!\?\:])(^ 13)。 [置換]ボックスに、次のように入力します:^ s \ 2 \ 3 \ 4。 [すべて置換]をクリックします。

これが実際にどのように機能するかについては、少し説明が必要な場合があります。ここでの秘訣は、手順4で指定した検索対象です。検索対象の各要素は(括弧)で囲まれているため、簡単に選択して、[置換]ボックス(手順5)で参照できます。 [検索する文字列]ボックスの4つの要素(ここでも括弧で囲まれています)は次のとおりです。

。 ()

。 ([0-9A-Za-z〜-] \ {1、})

。 ([。\!\?\:])

。 (^ 13)

最初の要素は単一のスペースです。 2番目は、任意の数の数字、文字、またはダッシュです。 (これは、この要素の最後の部分(\ {1、})であり、任意の数の数字、文字、またはダッシュを指定できます。)これは、段落の最後の単語を指定する要素であり、次のものが含まれます。複合単語が単一の単語として扱われるように、単語にダッシュが含まれる可能性。 3番目の要素は表示されている句読点のいずれかであり、4番目の要素は実際の段落の終わりのマーカーです。

[置換]仕様(ステップ5)は、最初の要素(スペース)を改行しないスペースに置き換えるだけで、2番目、3番目、および4番目の要素を元の位置に戻します。

この検索と置換のアプローチが機能しないシナリオがいくつかあることに注意してください。まず、句読点と段落の終わりマーカーの間に段落の末尾にスペースがある場合は機能しません。上記の検索と置換を実行する前に、検索と置換を使用して、ドキュメント全体でこれらを取り除くことができます。

それが機能しない2番目の状況は、段落が複合句読点で終わっている場合です。たとえば、ピリオドの後に引用符が続く場合や、引用符の後にコロンが続く場合などです。ワイルドカード検索では、段落の最後に句読点が1つしかないことを想定しており、指定された4つの句読点のいずれかである必要があります。

それが機能しない3番目の状況は、段落の最後の単語に何らかの句読点がある場合です。たとえば、最後の単語が実際には1,234などの数字である場合、コンマを含めると一致が発生しなくなります。これは、検索対象の2番目の要素にコンマを含めることで対処できますが、これが発生する可能性のある回数はごくわずかであるため、上記の手順では許可しませんでした。

置換にマクロベースのアプローチを好む場合は、次のマクロの使用を検討してください。

Sub LastTwo()

Dim p As Paragraph     Dim J As Integer     Dim K As Integer     Dim sTemp As String

For Each p In ActiveDocument.Paragraphs         J = p.Range.Words.Count         For K = J To 1 Step -1             sTemp = p.Range.Words(K)

If Right(sTemp, 1) = " " Then                 p.Range.Words(K) = RTrim(sTemp) & Chr(160)

K = 1             End If         Next K     Next p End Sub

マクロは、ドキュメントの各段落をステップスルーしてから、段落内の単語を逆方向にステップスルーします。末尾のスペースを含む最初の単語を検索し、そのスペースを改行しないスペースに置き換えます。

このマクロには興味深い点が1つあります。それは、すべてのシステムで期待どおりに機能するとは限らないことです。実行後、改行なしのスペースが得られず、代わりに最後の2つの単語の間に小さな「クロス」が表示される場合は、コード内のChr(160)をChr(202)に置き換えるだけです。 Wordにノーブレークスペースの定義済み列挙型が含まれていると、はるかに簡単になりますが、含まれていません。代わりに、すべてのシステムで同じように見えるわけではない、改行しないスペースのASCIIコードに依存する必要があります。

注:

このページ(または_WordTips_サイトの他のページ)で説明されているマクロの使用方法を知りたい場合は、役立つ情報を含む特別なページを用意しました。

_WordTips_は、費用効果の高いMicrosoftWordトレーニングのソースです。

(Microsoft Wordは、世界で最も人気のあるワードプロセッシングソフトウェアです。)このヒント(13577)は、Microsoft Word 2007、2010、2013、2016、2019、およびOffice365のWordに適用されます。