ユーザー定義関数(関数プロシージャ)は、関数名と引数で呼び出すだけで、複雑な処理を行ない、戻り値を返すことが可能です。
今回はユーザー定義関数の応用例として、テキストファイルの内容を読み込み、ワークシートのセルに表示するプログラムを試してみましょう。
プログラムは私のほうで作成済みです。
【1】以下のファイルをダウンロードしてください。
textFile.zip
【2】ダウンロードした「textFile.zip」を解凍すると、「textFile.xls」というExcelファイルがあります。
【3】次は「test.txt」というファイル名で、テキストファイルを作成し、Cドライブの直下に保存してください。
・C:\test.txt
*「\」はWindowsでは円記号のことです。
*ファイルの保存場所は重要です。
このテキストファイルの文章は、何でもかまいません。適当な文章を用意してください。
また上の図では、TeraPadというテキストエディターを使って作成していますが、Windows付属のメモ帳でもかまいません。
これで準備が整いました。
【4】「textFile.xls」を開いてください。
【5】メッセージが表示されますが、安全なので「マクロを有効にする」をクリックします。
【6】Excelの画面が表示されました。
このExcelファイルは、テキストファイルから取得した文章が表示しやすいように、セルの設定を以下のように変えています。
(1)A列の横幅を広げた。
(2)A列10行目までは、縦も広げた。
(3)A列10行目までのセルの書式設定を変更した。
・配置タブ 縦位置 上詰め
・配置タブ 文字の制御 折り返して全体を表示する
【7】VBEを起動します。
*「Altキー」+「F11キー」
【8】標準モジュールの「Module1」を選択し、コード(プログラム)を表示します。
【9】ユーザー定義関数のデータ型に注目してください。
この readTextFile() という関数は、String型(文字列型)のデータを受け取り、String型のデータを戻り値として返します。
プログラムの内部は、テキストファイルの1行目から最後の行までを取得し、最後に全体を返しているだけです。
プログラムの詳しい解説は、以下のWebページをご覧ください。
ステップメールで送信する文章を、テキストファイルから読み込む方法について。
この関数は、Excelからメールを送信(ステップメール)する時に、あらかじめ作成しておいた文章を取得するためのものです。解説がちょっと難しいかも知れません。
関数は使い方がわかれば、とりあえず利用はできるので、この段階ではプログラムの意味がわからなくてもかまいません。
【10】プログラムの確認が済んだら、VBEを閉じてください。
【11】セル「A1」の「数式の編集」に以下のような式を入力し、関数を呼び出します。
・例
=readTextFile("C:\test.txt")
*「\」はWindowsでは円記号のことです。
*必ず存在するテキストファイルを指定してください。
*テキストファイルはフルパスで指定します。
またこの関数の引数は、String型なので、「"」(ダブルクォーテーション)で囲むことも忘れないでください。忘れるとエラーになります。
このプログラムはパソコンのファイルを読み込むので、セキュリティソフトによっては、メッセージが表示されることがあります。安全なので、「許可」してください。
【12】関数を実行すると、以下のようにテキストファイルの内容が取得できます。
【13】他にもテキストファイルを用意して、別のセルに読み込んでみてください。
【14】動作確認が済んだら、「textFile.xls」を閉じてください。
【15】ファイルを閉じる時には、メッセージが表示されます。
これは数式の編集を行なったためです。
ファイルの変更点を残しておきたい場合は「はい」、残す必要がなければ「いいえ」をクリックします。
どうでしたか?
「関数名と引数で呼び出すだけで、複雑な処理を行ない、戻り値を返す」という感覚が掴めたでしょうか。
今回は10行ちょっとの短いプログラムでしたが、もっと複雑な処理でも可能です。
数百行から数千行の処理も、関数名だけで呼び出すことができます。