みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。
前回、以下の記事でWord VBAの準備についてお伝えしました。
さて、Word VBAで作業を自動化…どんなことをしたいですか?
と言われたら、それはもちろん「文字入力」ですよね。Wordは文書作成ソフトですから当然です。
いつもの定型文をショートカットキーでパッと入力できれば便利ですもんね。
しかし、Word VBAで文字を入力する方法は、実はとってもたくさんありまして、検索するとそのパターンは山ほどできてきます。
今回は、初心者向けWord VBAということで、多数あるで文字を入力する方法の中で最もシンプルでわかりやすいものを紹介します。
Selectionオブジェクトを使って、現在のカーソル位置に文字を入力する方法ですよ。
では、行ってみましょう!
初めてのWord VBA
さて、文字入力をするWordマクロを作る前に、Word VBAによるプロシージャの作成と実行を練習しておきましょう。
コードウィンドウに以下を入力してみましょう。
Sub debugTest()
Debug.Print "Word" & "VBA"
End Sub
入力できたら、以下に示す「実行」アイコンをクリックします。
すると、イミディエイトウィンドウに以下のように「WordVBA」と出力されますよね。
実行はSubプロシージャ内にカーソルがある状態で F5 キーでも可能です。
Subプロシージャ
Word VBAで作成するプログラムは、Subプロシージャという単位で作成、実行をします。
‘処理
End Sub
一連のプログラムはSubで始まり、End Subで終わるというわけです。
VBEで「sub プロシージャ名」と入力した後に Enter キーを押すと、VBEの補完機能で
- subの「s」が大文字になる
- 括弧「()」が付与される
- 「End Sub」が付与される
などが自動で行われます。便利ですので、使いこなしておきましょう。
文字列の連結
文字列を連結する場合はアンパサンド(&)記号を使います。
アンパサンドの前後にスペースを入れるのを忘れないようにしましょう。よくミスります。
Debug.Printでイミディエイトウィンドウに出力
Debug.Printは指定した値をイミディエイトウィンドウに出力する命令です。
Wordの文書に何かの操作をするわけではありません。
プログラムの動作などを確認する際に、うまいこと入れていきましょう。
Selectionオブジェクトとは
さて、本題に入りましょう。
Word VBAを語る上でぜひ知っておいて欲しいのが、カーソルの位置・選択範囲を表すSelectionオブジェクトです。
このSelectionオブジェクトを使って、現在カーソルがある位置または選択している箇所に対して
- 文字や段落記号を入力する
- コピーや削除をする
- スタイルを変更する
- フォントの設定を変更する
- 文字列を検索をする
などの操作を実行することができます。
文書の入力中にショートカットキーに登録したマクロなどを利用する際には、Selectionオブジェクトに大いにお世話になりそうですよね。
現在のカーソル位置を知る
まず、Selectionオブジェクトを使って、現在のカーソル位置を調べてみましょう。
Selectionオブジェクトは、選択範囲もつかさどりますから「最初」と「最後」があります。
その位置を知るには、Selectionオブジェクトに対するStartプロパティ、Endプロパティを使います。
書き方はこちらです。
それぞれ得られる値は文字位置を表す整数です。
例えば、以下のようなWordの文書が開いていて、カーソルは文書の冒頭にあるとします。
この状態で以下のプロシージャを作成してみましょう。
Sub getPosition()
Debug.Print "Start: " & Selection.Start
Debug.Print "End: " & Selection.End
End Sub
このプロシージャを実行すると、イミディエイトウィンドウに以下のように出力されます。
Startが0、Endも0。
カーソルが文字列0の位置にあるということがわかりますよね。
選択範囲の位置を知る
では、範囲が選択されているときはどうなるでしょうか?
以下のように、ある文字列を選択した状態にしてみます。
この状態で、先ほどのプロシージャを実行してみますと
となります。
選択範囲の開始位置が127、終了位置が137ということですね。
これがSelectionオブジェクトの選択範囲の表現方法となります。
typeTextメソッドで文字を入力する
では、いよいよ文字入力をしていきましょう。
カーソル位置または選択範囲に文字入力をするには、Selectionオブジェクトに対してtypeTextメソッドを使います。
書き方はこちら。
カーソル位置に文字を入力する
では、typeTextメソッドを使って文字列を入力してみましょう。
例えば、以下のような位置にカーソルがあるとしましょう。
この状態で、以下プロシージャを作成して実行をしてみましょう。
Sub typeText()
Selection.typeText "----- ここから -----"
End Sub
実行結果はこうなります。
ばっちり入力できています。
選択範囲に文字を入力する
では、範囲選択されている場合に実行するとどうなるでしょう?
以下のように、範囲が選択されているとします。
この状態で先ほどのプロシージャを実行してみましょう。楽しみですね。
選択範囲が、typeTextで指定した文字列にごっそり入れ替わりましたね。
まとめ
Word VBAで文書のカーソル位置または選択範囲に文字を入力する方法についてお伝えしました。
カーソル位置と選択範囲を表すSelectionオブジェクトに対して、typeTextメソッドを使います。
「入力」に関しては、文字列の入力以外に、段落記号の入力についても理解しておく必要があります。
次回はそのあたりお伝えしますね。
どうぞお楽しみに!
連載目次:初心者向けWord VBAで文字入力をしてみよう
お仕事でよく使う文書作成ソフトWord。実は、WordでもVBAでプログラミングができるんです。本シリーズでは、初心者向けとしてWord VBAで文字入力をする方法をお伝えしていきます。- Word VBA入門の最初の一歩!マクロ作成準備の6つのステップ
- Word VBAでカーソル位置に文字を入力するとっても簡単なプログラム
- Word VBA初心者がまず押さえておくべき段落記号の入力方法
- Word VBAで選択範囲の前後に文字列で挿入するマクロを作る方法
- Word VBAで作成したマクロをショートカットキーに登録する方法
- Word VBAを使うなら知っておくべき「段落」の話とその操作方法
- Word VBAで選択範囲の最初の段落&最後の段落を取得する方法
- Word VBA初心者にちゃんと理解して欲しいスタイルとその設定をする方法
- Word VBAでWithステートメントを使って同一オブジェクトの表記をスッキリ書く方法
- Word VBAでフォームを表示&コマンドボタンでマクロを実行する方法
- Word VBAでフォームをEscキーで閉じるようにするテクニック