前回の記事「【コード】選択されている文字列を文書内で検索する」のテーマでは、以下の現象について取り上げました。
選択されている文字が、「検索と置換」ダイアログの「検索する文字列」欄に自動で入力される場合とされない場合とがある。
「検索する文字列」欄とは、以下の画像の赤で囲った部分ですね。
上記の現象は、検索をする場合([Ctrl] + [F])も、置換をする場合([Ctrl] + [H])も同じですね。
みなさんも、日頃Wordを使われていて、不思議に思ったことありませんでしたか?
なんとなく、自動入力されることを期待してダイアログを立ち上げたのに入力されずに、前回の検索結果が表示されていたいう経験ありませんか?
昨日の記事を執筆時には、あまり検証をしませんでした(実は、私の場合、かならず選択文字列が検索する文字列欄に入力されるように別のマクロを組んであるので、興味の対象外でした。失礼しました。。。)。
読者の方からヒントをいただきまして、少し検証したのでその報告をいたします。
結論としては、おそらく以下の通りです。
選択されている文字列が1つの単語の場合(Wordが認識する単語の場合)、その文字列は「検索と置換」ダイアログの「検索する文字列」欄に自動で入力される。
「単語」というものがくせ者です。
わかりやすく「単語」としましたが、厳密には単語ではありません。
英語の場合は比較的わかりやすいですね。
This is a pen.
この英文の場合、単語として認識されるのは、「this」 「is」 「a」 「pen」 「.」の5つです。
<目次>
具体例
【例1】
選択範囲の末尾にスペースを含む場合であっても、スペースを削除して前半の単語だけ「検索する文字列」欄に入力します。
この場合、「This」が入力されます。
【例2】
逆に、選択範囲の先頭にスペースがある場合には、何も自動入力されません。注意が必要です。
この場合には、何も入力されません。
【例3】
上記で記したとおり、ピリオドも1つの単語として見なしているようなので、pen. が選択されていると自動入力されません。
この場合も、何も入力されません。
【例4】
2語以上含む場合には、ルール適用外です。
この場合、自動入力されません。
【例5】
ただし、単語ではなくても、単語内の文字は自動入力されますし、末尾にスペースがある場合には、削除されます。
この場合、「his」が入力されます。
確認方法
では、ワードがどのように単語を見分けているのか?ですが、簡単な試し方があります。
以前、「カーソル移動の極意 」の記事で紹介したとおり、[Ctrl] + [→] としたときに、文書注でカーソルが移動する範囲が単語の範囲です。
日本語の場合についても同様ですね。
ちょうど、上記のカーソル移動の極意 に、日本語でカーソルが移動する様子が書かれていますので、Wordが単語として認識するルールをご確認ください。
-
2. 面白い記事ですね!(^^)
ここまで細かく見たことはありませんでしたので参考になりました。
> Wordが単語として認識…
オブジェクトとしてはWordsコレクションでしょうか。
Public Sub Sample()
Dim r As Word.Range
For Each r In ActiveDocument.Words
Debug.Print r.Text
Next
End Sub単語レベルで抜き出したいときには使えそうですね!
コメント