【Wordマクロ】ユーザーフォームで簡単な編集ツールを作る

テーマはWordマクロのユーザーフォーム 日常の話

Wordマクロを使うと、よく使う置換や選択範囲のなかで特定の文字を削除するなどの作業を省力化することが可能です。ユーザーフォームにそれらの機能を登録したボタンを表示させることで便利に利用することが可能です。

マクロをユーザーフォームに登録して編集ツールにする

マクロを画面上部のクイックアクセスツールバーに登録しておいたり、ショートカットキーを割り当てて実行することもできますが、今回はユーザーフォームを使ってみます。

クイックアクセスツールバーはよく使うものを登録しておくのには向いていますが、たまにしか使わないマクロをいっぱい登録しておくのには向かない。

またショートカットキーに割り当てるのも覚えるのが大変です。

ユーザーフォームであれば使う時だけ表示することができます。またマクロを登録したdocmファイルさえあればPCが変わってもすぐに利用できます。

ユーザーフォームでマクロを使う手順としては以下の通りです。

  1. VBAで標準モジュールを追加する。
  2. 標準モジュールでマクロの本体の機能を作成する。
  3. VBAでユーザーフォームを追加する。
  4. ユーザーフォームの設定とボタンの設置をする。
  5. ユーザーフォ―ムのコードでボタンと標準モジュールのマクロを紐付ける。
  6. ユーザーフォームを表示するマクロを標準モジュールに作成する。

選択範囲中の改行を削除するマクロをユーザーフォームで使う

VBAで標準モジュールを追加する。

Wordの文書作成画面から「開発タブ」⇒「Visual Basic」でVBA画面に切り替えます。

そして、左のウインドウでマクロを作成したい文書で右クリック⇒「挿入」⇒「標準モジュール」で標準モジュールが挿入できます。

標準モジュールの追加方法
標準モジュールを追加します

標準モジュールでマクロの本体の機能を作成する。

今回は選択範囲で改行を削除するマクロを作成します。

置換機能を使って、改行記号の「vbCr」を「””」と空の文字列に置換することで改行記号を削除します。

挿入した標準モジュールのModule1に以下のコードを書きこみます。

'選択範囲内で改行を置換で削除する
Sub 選択範囲で改行削除()
    With Selection.Find
        .Text = vbCr
        .Replacement.Text = ""
        .Wrap = wdFindStop
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
End Sub

これでワードで文書を選択した範囲ないで改行を削除することができます。

VBAでユーザーフォームを追加する。

標準モジュールを挿入した同じように、左のウインドウでマクロを作成したい文書で右クリック⇒「挿入」⇒「ユーザーフォーム」でユーザーフォームが挿入できます。

ユーザーフォームの追加方法
ユーザーフォームを追加します

ユーザーフォームの設定とボタンの設置をする

最初に、ユーザーフォームの左下のプロパティで「ShowModal」の項目を初期値の「True」から「False」に変更します。

これが「True」だとフォームを表示中はワードの文書の操作ができません。「False」にするとフォームを表示しながらワード文書の編集や範囲の選択が可能になります。

ShowModalの設定方法
項目の右の▼でFalseを選択します

次にボタンを設置します。

ツールボックスから「コマンドボタン」を選択し、ユーザーフォームでボタンを設定した部分でドラッグします。
(ツールボックスが表示されていないときは「表示」からツールボックスを選択します)

ボタンの設置方法
ドラッグでボタンを設置します

ボタンが設置できたら、ボタンを選択してプロパティの「Caption」でボタンに表示される文字列を変更できます。今回は「改行を削除」に変更します。

これでボタンが設置できました。

ボタンの表示の設定方法
Captionでボタンの表示文字列を設定します

次に、緑色で囲ったオブジェクト名「CommandButton1」にマクロを紐つけます。

ユーザーフォ―ムのコードでボタンと標準モジュールのマクロを紐付ける

次に、ユーザーフォームの作成したボタンをダブルクリックします。

するとユーザーフォームのコードが表示されボタンをクリックした際に実行するコードを記載する部分が表示されます。

ユーザーフォームのコード入力画面


以下のコードを記載します。「Call 関数名」で標準モジュールで作成した関数を実行します。実行後にマクロの文書がアクティブになるように「Application.Active」も記載しておきます。

Private Sub CommandButton1_Click()

Call 選択範囲で改行削除

'マクロ実行後ワード文書をアクティブにする
Application.Activate

End Sub

ユーザーフォームを表示するマクロを標準モジュールに作成する

最後に標準モジュールのModule1にユーザーフォームを表示するためのマクロを記載します。

フォームを表示するマクロのコードの入力場所

「UserForm1.Show」で作成したユーザーフォームを表示することができます。

Sub ユーザーフォーム表示()

UserForm1.Show

Application.Activate

End Sub

これで完成です。

ファイルをセーブするときは、マクロを保存できるようにファイルの種類を「Wordマクロ有効文書(*.docm)」を選択して保存しましょう。

作成したマクロを使う

Word文書に戻って、「開発」タブ ⇒「マクロ」ボタンで、マクロを選択するウインドウが開くので、作成したユーザーフォーム表示のマクロを実行します。

マクロの実行方法

すると、作成したユーザーフォームが表示されます。
文書で改行を削除したい範囲を選択してボタンを押すとマクロが実行されます。

マクロの実行方法

このように改行が削除されました。

マクロの実行結果

Wordでも簡単なマクロを活用すると作業が効率化可能です。

ユーザーフォームを使うとさらに便利にマクロを実行することが可能です。

【広告】


コメント

タイトルとURLをコピーしました