ワードマクロでファイル選択フォームをつくろう(フォーム, ファイルダイアログの使い方)

シェアする

業務効率化したい人向けのワードマクロ初心者講座(ファイル選択フォーム, キー操作保存, 単語置換, 連想配列, テーブル情報読み込み)の第一回講座です。

まずは、以下のようなマクロを適用するWordファイルを選択して、マクロ処理を開始する事ができるフォームを作成します。

ワードマクロは、テンプレートという形でワードに組み込まない限り、マクロを記述してあるワードマクロファイル(拡張子はdocm)に対してしか、マクロを実行することができません。

でも、実行しているマクロの中で、他のワードファイルを開いたり、他のワードファイルに対して処理を行うことはできます。

そこで、簡単に、他のワードファイルに対してワードマクロを使っていろんな処理を行うことができるように、上記のようなフォームを使うのです。

この方法はかなり便利ですので、いろんなマクロを作るときに、利用してください。

それでは、講義を始めていきましょう。

第一回:ファイル選択フォームをつくろう

手順1:新しいワードマクロファイルを作成

「ファイル→新規→白紙の文書」からマクロ作成用に新しいワード文書を作成します。

すぐに一度保存しておきましょう。

このワードファイルにはマクロを記録するため、ファイルの種類を「Wordマクロ有効文書(*.docm)にしておきます。

手順2:VBE(ワードマクロの開発環境)を開く

マクロを記述するために、VBEを開きましょう。

メニューの「開発→Visual Basic」で起動することができます。

以下のようにVBEというマクロの開発環境が起動します。

もし、メニューに「開発」タブがない場合、記事「オフィスの自動化。操作の記録やマクロを使う「開発」タブの表示の仕方」を参考に表示させてください。

また、「Alt+F11」キーを押してもVBEを起動することができます。

VBEの使い方はこれから講座の中で説明していきますが、詳しく知りたい場合、

ワードマクロ:Visual Basic EditorでVBAを表示 

ワードマクロ:VBEに表示されるプロジェクトとモジュールとは?

ワードマクロ:VBEでキー操作を記録したマクロを実行してみましょう

ワードマクロ:マクロを新規作成する方法

などの記事でも説明していますので、見てみてください。

手順3:フォームの作成

それでは、フォームを作成していきましょう。

手順3-1:空のフォームを作成

まず、VBEのプロジェクトビューから、プロジェクト名を右クリックします。
次に、出てくるコンテキストメニューで、「挿入→ユーザーフォーム」をクリックします。

すると、下図の用にとりあえず何も配置されていないフォームが作成されます。

もし、ツールボックスが表示されていない場合、VBEのメニュー「表示→ツールボックス」をクリックすると表示されます。

手順3-2:フォーム名を変更

まず、作成したばかりのフォームの名前を変更しておきます。
「プロジェクト」ビューのフォームを右クリックし、「オブジェクトの表示」をクリックします。

すると、「プロパティ」ビューにこのフォームのプロパティ(設定)が表示されますので、
フォームの名前(オブジェクト名)に、「frm_fileselect」、
タイトルバー表示(Caption)に、「ファイル名を指定して実行」
と設定しましょう。

すると、下図のように右側のフォームの表示が変わります。

手順3-3:フォーム起動する処理を追加

ここで、作ったばかりのフォームを起動してみましょう。

フォームを起動する処理を追加します。
まず、処理を記述する標準モジュールを作ります。「プロジェクト」ビューのプロジェクトを右クリックして、「挿入→標準モジュール」をクリックします。

標準モジュールの中に、「Module1」というモジュールが作られました。
右側には、中が空っぽのModule1が表示されています。表示されていない場合、「プロジェクト」ビューのModule1 をダブルクリックすると、表示されます。

Module1にフォームを起動するマクロを記述していきます。

下図のように記述してください。

コードの説明をしていきます。

これは、変数は、宣言してから使うようにするオプションです。

このオプションがないと、いつでも変数を使い始められて便利なのですが、変数名をうち間違違えたとこに気づかず、マクロが変な動作をしてしまう事があるため、このオプションを使うようにしましょう。

「'(シングルクォーテーション)」以降はコメントです。つまりマクロとしてはなんの動作もしないので、マクロのコードが何をしているのか理解しやすくするため、人が読むようにコメントを入れましょう。

Sub はサブルーチンプロシージャといって、マクロの処理ひとかたまりとなります。

Public は、Sub を修飾する語句でモジュールの外からも実行できるという意味になります。マクロとして実行するサブルーチンは、Public である必要があります。

その他には、Private という修飾語があり、これは、同じModule内からしか、呼び出すことができないサブルーチンになります。

サブルーチンの名前は、「単語変換マクロGUI」で、そのままマクロ名となります。

記事「ワードマクロ:基礎(プロシージャ、ステートメント、データと変数の式)」にサブルーチンについての記述があります。

サブルーチンの中は、ステートメント(命令)が一つだけあって、先程作ったフォーム「frm_fileselect」のShow というメソッドを呼び出しています。

フォームを「表示する」っていう意味になります。

入力すると、下図のようになります。

VBEの三角アイコンの再生ボタン(正確にはSub/ユーザフォームの実行ボタン)を押すと、マクロを実行することができます。

VBEの再生ボタンを押したとき、カーソルがマクロとして実行可能なサブルーチンの場合は、そのまま実行されます。上図で「単語変換マクロGUI」の中にカーソルがある場合は、下図のようにフォームが起動します。

もし、修飾子 Privateがサブルーチンについていたり、サブルーチンに引数があったり、サブルーチンの外にカーソルがある場合は、実行するサブルーチンを選択する画面が表示されます。

その場合、下図のように「マクロ」ウィンドウで、マクロを選択して「実行」ボタンを押すと、マクロを実行できます。

手順3-4:テキストボックス、ボタン、説明ラベルを配置

ここからは、フォームの中を作っていきます。

ファイル名を表示するテキストボックス、ファイル選択ボタン、処理実行ボタンと、その説明ラベルを配置していきます。

フォームの大きさを変更

まず、フォームの右下をつまんで、フォームの幅を大きくします。

テキストボックスの配置

テキストボックスの名称を変更します。

ボタンの配置

同様に、ボタンを配置します。

ボタン名とキャプション(表示する文字)を設定します。

ボタン1:
ボタン名(オブジェクト名) → btn_select
文字(Caption) → 選択

ボタン2:
ボタン名(オブジェクト名) → btn_exe
文字(Caption) → 実行

説明ラベルの配置

レイアウト(配置)の最後に、ラベルを追加します。
ツールボックスから「ラベル」をクリックしてフォーム内に配置します。

そして、「プロパティ」のCaptionに、テキストボックスの説明として「ファイルの選択」と入力します。

手順3-5:ファイル選択ボタンの動作を作成

ここまでで見た目完成ですが、今は、ボタンを押してもなんの動作もしません。
これから「選択」ボタンを押してファイルを選択できるようにします。

まず、ツールボックスで「オブジェクトの選択」を選んで、処理を実装したい「選択」ボタンを右クリック。

コンテキストメニューで「コードの表示」をクリックします。

すると、下図のように、

btn_select_Click() というサブルーチンが作成されています。

このサブルーチンは、btn_select という名前のボタンがクリックされたときに実行されるサブルーチンになります。

そしてクリックだとか、ダブルクリックだとかかの動作を「イベント」と呼ぶため、このようなサブルーチンを「イベントハンドラ」と読んだりします。

ハンドラは処理するものと言う意味で、この場合、クリックというイベントを処理するサブルーチンということです。

さて、このイベントハンドラの中に、以下のようなコードを書きましょう。
コードの説明は、コメントを多めに入れて行っています。

大まかにやっていることといえば、
メッセージボックス MsgBox でほんとにファイル選択するかを問い合わせしていることと、
ファイルダイアログ(FileDialog)を使って、ファイル選択を行っていること、
です。

Exit Sub というステートメント(命令)は、サブルーチンの実行をその場で終了するという意味です。

コードを追加したら、ちゃんと動くかテストしてみましょう。

作成したイベントハンドラ(btn_select_Click) の中にカーソルがある状態で、「Sub/ユーザーフォームの実行」ボタンを押すと、フォームを起動することができますが、せっかくなので、先程作成した「単語変換マクロGUI」マクロからフォームを起動してみましょう。

「選択」ボタンを押すと、まずはMsgBoxが開いてほんとにファイル選択するか確認します。

ファイルダイアログが開くので、Wordファイルを選択して「開く」で開きます。

選択した結果が、テキストボックスに入力されます。

手順3-6:処理実行ボタンの動作を作成

最後に、「実行」ボタンを押したときのイベントハンドラを実装します。

先ほどと同様に、「実行」ボタンを右クリックして「コードの表示」をクリクします。

すると、Sub btn_exe_Click() というイベントハンドラが作成されます。

サブルーチン「btn_select_Click」の中に下のようなコードを実装していきます。
先ほどと同様にコメントで詳しく解説していきます。

大まかにやっている処理としては、

  • tbx_file にちゃんと実在するファイルが選択されているかをチェック、
  • tbx_fileに記述してあるファイルを開いて、そのファイルを引数として「マクロ本体」というサブルーチンを呼び出します。

をしています。

手順3-7:プロシージャ「マクロ本体」の作成

最後に「マクロ本体」というマクロのプロシージャを記述します。この「マクロ本体」がまさに、このマクロ全体で処理したい内容を記述していくプロシージャになります。

上のコードで、呼び出し部が、

となっているように、この処理は引数付きで定義します。また、フォームの処理ではないので、Module1 に作ります。

「プロジェクト」ビューで標準モジュールの下の「Module1」をダブルクリック、あるいは右クリックして「コードの表示」をクリックします。

右側にコードが表示されます。下のコードを 「単語変換マクロGUI」サブルーチンの下に記述してください。

下図のようになります。

動かしてみよう

さて、それでは実行してみましょう。

ファイルを選んで「実行」を押すと、下図のように選んだWordファイルのファイル名を表示して処理してよいかたずねるメッセージボックスが開きます。

まだ、処理を書いていないため、「OK」を押しても「キャンセル」を押しても処理が終わります。

最後に

これで、Wordファイルを作成するフォームの作成は完成です。次回、フォームのボタンを押したときに、処理を行う仕組みを作っていきます。

ワードマクロ初心者講座:

業務効率化したい人向けのワードマクロ初心者講座(ファイル選択フォーム, キー操作保存, 単語置換, 連想配列, テーブル情報読み込み)

第1回:ワードマクロでファイル選択フォームをつくろう(フォーム, ファイルダイアログの使い方)

第2回:添字に文字列を使える連想配列で対になった情報を管理しよう

第3回:キー操作の保存からマクロを作成し単語の置換処理を作ろう

第4回(最終回):ワードマクロでテーブル(表)に書いた単語変換マクロの設定を読み取ろう

この記事が気に入ったら
いいね ! しよう