Excel VBA テキストファイルの内容を読み込み、ワークシートのセルに表示する方法。

ExcelVBAで、ユーザー定義関数を作成すれば、もっといろんなことが出来ます。

ユーザー定義関数(関数プロシージャ)は、関数名と引数で呼び出すだけで、複雑な処理を行ない、戻り値を返すことが可能です。

今回はユーザー定義関数の応用例として、テキストファイルの内容を読み込み、ワークシートのセルに表示するプログラムを試してみましょう。

プログラムは私のほうで作成済みです。

【1】以下のファイルをダウンロードしてください。

textFile.zip


【2】ダウンロードした「textFile.zip」を解凍すると、「textFile.xls」というExcelファイルがあります。

excel-vba-71.gif


【3】次は「test.txt」というファイル名で、テキストファイルを作成し、Cドライブの直下に保存してください。

・C:\test.txt
excel-vba-78.gif

*「\」はWindowsでは円記号のことです。
*ファイルの保存場所は重要です。

このテキストファイルの文章は、何でもかまいません。適当な文章を用意してください。

また上の図では、TeraPadというテキストエディターを使って作成していますが、Windows付属のメモ帳でもかまいません。


これで準備が整いました。

【4】「textFile.xls」を開いてください。


【5】メッセージが表示されますが、安全なので「マクロを有効にする」をクリックします。

excel-vba-72.gif


【6】Excelの画面が表示されました。

excel-vba-73.gif

このExcelファイルは、テキストファイルから取得した文章が表示しやすいように、セルの設定を以下のように変えています。

(1)A列の横幅を広げた。
(2)A列10行目までは、縦も広げた。
(3)A列10行目までのセルの書式設定を変更した。
・配置タブ 縦位置 上詰め
・配置タブ 文字の制御 折り返して全体を表示する


【7】VBEを起動します。

*「Altキー」+「F11キー」


【8】標準モジュールの「Module1」を選択し、コード(プログラム)を表示します。

excel-vba-74.gif


【9】ユーザー定義関数のデータ型に注目してください。

excel-vba-75.gif

この readTextFile() という関数は、String型(文字列型)のデータを受け取り、String型のデータを戻り値として返します。

プログラムの内部は、テキストファイルの1行目から最後の行までを取得し、最後に全体を返しているだけです。

プログラムの詳しい解説は、以下のWebページをご覧ください。
ステップメールで送信する文章を、テキストファイルから読み込む方法について。

この関数は、Excelからメールを送信(ステップメール)する時に、あらかじめ作成しておいた文章を取得するためのものです。解説がちょっと難しいかも知れません。

関数は使い方がわかれば、とりあえず利用はできるので、この段階ではプログラムの意味がわからなくてもかまいません。


【10】プログラムの確認が済んだら、VBEを閉じてください。


【11】セル「A1」の「数式の編集」に以下のような式を入力し、関数を呼び出します。

excel-vba-76.gif

・例

=readTextFile("C:\test.txt")


*「\」はWindowsでは円記号のことです。
*必ず存在するテキストファイルを指定してください。
*テキストファイルはフルパスで指定します。

またこの関数の引数は、String型なので、「"」(ダブルクォーテーション)で囲むことも忘れないでください。忘れるとエラーになります。

このプログラムはパソコンのファイルを読み込むので、セキュリティソフトによっては、メッセージが表示されることがあります。安全なので、「許可」してください。


【12】関数を実行すると、以下のようにテキストファイルの内容が取得できます。

excel-vba-77.gif


【13】他にもテキストファイルを用意して、別のセルに読み込んでみてください。


【14】動作確認が済んだら、「textFile.xls」を閉じてください。


【15】ファイルを閉じる時には、メッセージが表示されます。

excel-vba-79.gif

これは数式の編集を行なったためです。

ファイルの変更点を残しておきたい場合は「はい」、残す必要がなければ「いいえ」をクリックします。


どうでしたか?

「関数名と引数で呼び出すだけで、複雑な処理を行ない、戻り値を返す」という感覚が掴めたでしょうか。

今回は10行ちょっとの短いプログラムでしたが、もっと複雑な処理でも可能です。

数百行から数千行の処理も、関数名だけで呼び出すことができます。

スポンサードリンク

スポンサードリンク






Excel VBA 初心者入門講座 TOPへ