【Word VBA】文字列を選択範囲の前後に挿入するWordマクロ

2014年2月5日

文字列を選択して、その文字列を丸かっこ鉤かっこで囲むマクロってけっこう役に立ちます。

特に、日本語を書いている最中に、半角の角かっこで文字を囲む場合には、この手のマクロは威力を発揮します。

カーソル移動だけではなく、IME(ATOK)のオン・オフもすべてやるのは面倒ですから。

先日の大阪のJTFセミナー以来、しんハムさんがいろいろとWordマクロ記事を書かれています。

しんハムさんのブログ記事(Wordマクロ その3 – 変数と定数の話 )のマクロを見て、このマクロを思い出しました。

Wordには、InsertBeforeInsertAfterといった便利なメソッドも用意されているので、こんな書き方もありますよ、という紹介です。

このマクロでできること

文字列を選択してマクロを実行すると、選択されている文字列の前に半角の角かっこ [ を入力し、選択されている文字列の後に、 ] タブ と入力します。角かっこと「タブ」の間には半角スペースが入っています。

そうです。「ファイル」を選択して実行すると、[ファイル] タブになるというわけです。

文字列入力後に選択が解除されて、タブの右側にカーソルが移動します。

(実行前)      (実行後)

文字列挿入

マクロの解説

InsertBefore メソッドで、選択範囲の直前に文字列を入力します。

入力できる文字列に書式を設定できません。選択された文字列の直前の文字の書式に一致します。

InsertAfter メソッドで、選択範囲の直後に文字列を入力します。

文字列の書式は、選択された文字列の最後の文字の書式に一致します。

これらのメソッドのよいところは、選択範囲にある文字列は一切触らないということです。書式がそのまま残りますから安全です。

選択された文字列に書式がない場合には、マクロ2の記載がシンプルでわかりやすいですね。

上記の特徴を比較してみましょう。それぞれの良し悪しがありますから、使い分けたらいいと思います。

・マクロ1

(実行前)      (実行後)

文字列挿入

・マクロ2

(実行前)      (実行後)

文字列挿入

マクロ1


Sub 文字列を選択範囲の前後に挿入する()

 With Selection
  .InsertBefore Text:="[" '選択範囲の直前
  .InsertAfter Text:="] タブ" '選択範囲の直後
  .Collapse Direction:=wdCollapseEnd '選択の解除
 End With
 
End Sub

マクロ2


Sub 文字列を選択範囲の前後に挿入する_2()

 With Selection
  .Text = "[" & .Text & "] タブ"
  .Collapse Direction:=wdCollapseEnd '選択の解除
 End With
 
End Sub

関連記事

しんハムさんのブログ記事(Wordマクロ その3 – 変数と定数の話

選択範囲内の半角数字を全て下付き文字にする

-コード
-,