Word VBAでカーソル位置に文字を入力するとっても簡単なプログラム

★気に入ったらシェアをお願いします!


type-text

photo credit: Diari La Veu – http://diarilaveu.com font: acistock via photopin (license)

みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。

前回、以下の記事でWord VBAの準備についてお伝えしました。

Word VBA入門の最初の一歩!マクロ作成準備の6つのステップ
お仕事でWordを使うことは多いわけですが、Word VBAでプログラミングするだけで、その作業を自動化できてしまいます。今回は、初心者向けの第一歩として、Word VBAをはじめる前にやっておくべき準備をお伝えします。

さて、Word VBAで作業を自動化…どんなことをしたいですか?

と言われたら、それはもちろん「文字入力」ですよね。Wordは文書作成ソフトですから当然です。

いつもの定型文をショートカットキーでパッと入力できれば便利ですもんね。

しかし、Word VBAで文字を入力する方法は、実はとってもたくさんありまして、検索するとそのパターンは山ほどできてきます。

今回は、初心者向けWord VBAということで、多数あるで文字を入力する方法の中で最もシンプルでわかりやすいものを紹介します。

Selectionオブジェクトを使って、現在のカーソル位置に文字を入力する方法ですよ。

では、行ってみましょう!

初めてのWord VBA

さて、文字入力をするWordマクロを作る前に、Word VBAによるプロシージャの作成と実行を練習しておきましょう。

コードウィンドウに以下を入力してみましょう。

入力できたら、以下に示す「実行」アイコンをクリックします。

Word VBAの実行

すると、イミディエイトウィンドウに以下のように「WordVBA」と出力されますよね。

Word VBAでイミディエイトウィンドウに出力

実行はSubプロシージャ内にカーソルがある状態で F5 キーでも可能です。

Subプロシージャ

Word VBAで作成するプログラムは、Subプロシージャという単位で作成、実行をします。

Sub プロシージャ名()
‘処理
End Sub

一連のプログラムはSubで始まり、End Subで終わるというわけです。

VBEで「sub プロシージャ名」と入力した後に Enter キーを押すと、VBEの補完機能で

  • subの「s」が大文字になる
  • 括弧「()」が付与される
  • 「End Sub」が付与される

などが自動で行われます。便利ですので、使いこなしておきましょう。

文字列の連結

文字列を連結する場合はアンパサンド(&)記号を使います。

文字列1 & 文字列2

アンパサンドの前後にスペースを入れるのを忘れないようにしましょう。よくミスります。

Debug.Printでイミディエイトウィンドウに出力

Debug.Printは指定した値をイミディエイトウィンドウに出力する命令です。

Debug.Print

Wordの文書に何かの操作をするわけではありません。

プログラムの動作などを確認する際に、うまいこと入れていきましょう。

Selectionオブジェクトとは

さて、本題に入りましょう。

Word VBAを語る上でぜひ知っておいて欲しいのが、カーソルの位置・選択範囲を表すSelectionオブジェクトです。

このSelectionオブジェクトを使って、現在カーソルがある位置または選択している箇所に対して

  • 文字や段落記号を入力する
  • コピーや削除をする
  • スタイルを変更する
  • フォントの設定を変更する
  • 文字列を検索をする

などの操作を実行することができます。

文書の入力中にショートカットキーに登録したマクロなどを利用する際には、Selectionオブジェクトに大いにお世話になりそうですよね。

現在のカーソル位置を知る

まず、Selectionオブジェクトを使って、現在のカーソル位置を調べてみましょう。

Selectionオブジェクトは、選択範囲もつかさどりますから「最初」と「最後」があります。

その位置を知るには、Selectionオブジェクトに対するStartプロパティ、Endプロパティを使います。

書き方はこちらです。

Selection.Start
Selection.End

それぞれ得られる値は文字位置を表す整数です。

例えば、以下のようなWordの文書が開いていて、カーソルは文書の冒頭にあるとします。

Word文書の先頭にカーソル

この状態で以下のプロシージャを作成してみましょう。

このプロシージャを実行すると、イミディエイトウィンドウに以下のように出力されます。

Word文書のカーソル位置をイミディエイトウィンドウに出力

Startが0、Endも0。

カーソルが文字列0の位置にあるということがわかりますよね。

選択範囲の位置を知る

では、範囲が選択されているときはどうなるでしょうか?

以下のように、ある文字列を選択した状態にしてみます。

Word文書で範囲選択

この状態で、先ほどのプロシージャを実行してみますと

Word VBAで範囲選択の場合の位置をイミディエイトウィンドウに出力

となります。

選択範囲の開始位置が127、終了位置が137ということですね。

これがSelectionオブジェクトの選択範囲の表現方法となります。

typeTextメソッドで文字を入力する

では、いよいよ文字入力をしていきましょう。

カーソル位置または選択範囲に文字入力をするには、Selectionオブジェクトに対してtypeTextメソッドを使います。

書き方はこちら。

Selection.typeText 文字列

カーソル位置に文字を入力する

では、typeTextメソッドを使って文字列を入力してみましょう。

例えば、以下のような位置にカーソルがあるとしましょう。

Word文書のカーソル位置

この状態で、以下プロシージャを作成して実行をしてみましょう。

実行結果はこうなります。

Word VBAでカーソル位置に文字入力

ばっちり入力できています。

選択範囲に文字を入力する

では、範囲選択されている場合に実行するとどうなるでしょう?

以下のように、範囲が選択されているとします。

Word文書で範囲選択されている

この状態で先ほどのプロシージャを実行してみましょう。楽しみですね。

Word文書で範囲選択されている

選択範囲が、typeTextで指定した文字列にごっそり入れ替わりましたね。

まとめ

Word VBAで文書のカーソル位置または選択範囲に文字を入力する方法についてお伝えしました。

カーソル位置と選択範囲を表すSelectionオブジェクトに対して、typeTextメソッドを使います。

「入力」に関しては、文字列の入力以外に、段落記号の入力についても理解しておく必要があります。

次回はそのあたりお伝えしますね。

Word VBA初心者がまず押さえておくべき段落記号の入力方法
初心者向けWord VBAで文字入力マクロの作り方をお伝えしています。今回は初心者のうちに知っておくべき段落記号の入力方法についてtypeParagraphメソッド・組み込み定数による方法をそれぞれお伝えします。

どうぞお楽しみに!

連載目次:初心者向けWord VBAで文字入力をしてみよう

お仕事でよく使う文書作成ソフトWord。実は、WordでもVBAでプログラミングができるんです。本シリーズでは、初心者向けとしてWord VBAで文字入力をする方法をお伝えしていきます。
  1. Word VBA入門の最初の一歩!マクロ作成準備の6つのステップ
  2. Word VBAでカーソル位置に文字を入力するとっても簡単なプログラム
  3. Word VBA初心者がまず押さえておくべき段落記号の入力方法
  4. Word VBAで選択範囲の前後に文字列で挿入するマクロを作る方法
  5. Word VBAで作成したマクロをショートカットキーに登録する方法
  6. Word VBAを使うなら知っておくべき「段落」の話とその操作方法
  7. Word VBAで選択範囲の最初の段落&最後の段落を取得する方法
  8. Word VBA初心者にちゃんと理解して欲しいスタイルとその設定をする方法
  9. Word VBAでWithステートメントを使って同一オブジェクトの表記をスッキリ書く方法
  10. Word VBAでフォームを表示&コマンドボタンでマクロを実行する方法