投稿者「Shunsuke Yoshikawa」のアーカイブ

8.1. 外部ファイルを扱う

8.1.1. 外部ファイルの必要性

マクロが育ってくると、外部ファイルを扱う必要性が出てきます。
例えば、IPアドレスの書かれたリストを外部ファイルにしておいて、そこから1行ずつアドレスを読みだしていく場合などがよく使われるやり方です。

他にも実行するコマンドのリストを入れておくなど、外部ファイルをうまく扱うことで、非常に柔軟性の高いマクロが作れるようになります。

 

8.1.1.1. ファイルの扱い方

ファイルを扱うには、最低でも3つのコマンドを知っておく必要があります。
fileopen、filereadln、filecloseです。

それぞれそこまで難しくはありませんが、少し癖があるので、一つずつ見ていきます。

 

8.1.1.2. fileopenコマンド

fileopenコマンドにより、外部ファイルを開くことができます。
fileopenコマンドの書き方は以下のとおりです。

 

ファイル名に指定したファイルが正しく開けた場合、ファイルの中身がファイルハンドルに格納されることになります。
最後の値0は他の値を指定することもできますが、0を指定した場合、ファイルの行頭から読んでいくことになります。

 

8.1.1.3. filereadlnコマンド

fileopenで読んだファイルハンドルから一行読み出します。

 

下記のコマンド例では、FHから読んだ一行目をLINEに格納しています。

 

 

8.1.1.4. filecloseコマンド

fileopenで開いたファイルをクローズします。
このコマンドを実行した後、ファイルハンドルが無効化されます。

 

 

8.1.2. 実際の動きで確認

では、実際にマクロとしてどう動いているかをサンプルを使って確認してみます。
サンプルとして、abc.txtというファイルに下記のようなテキストが含まれているものとします。

abc.txt

 

 

8.1.2.1. マクロにしてみる

下記のサンプルマクロでは、abc.txtというファイルを読むマクロを書いています。

1行目で’abc.txt’をfileopenし、FHに全体を格納しています。

2行目でFHをfilereadlnし、LINEに1行目の文字を格納しています。

3行目でLINEをsendlnしています。ここでは、abc.txtの一行目がLINEに格納されているため、LINE=”A”と同じ状態になっています。

4行目でFHをfilecloseしているので、このコマンド以降はFHをファイルハンドルとして使うことができません。

 

8.1.3. まとめ

外部ファイルを扱うには最低3コマンドが必要です。
fileopen、filereadln、fileclose。
それらの3つがあれば、最低限のコマンド構築が可能です。

今回の外部ファイルの扱いに、これまで学習したifやforを組み合わせることで、同じ動作を何回も行うマクロを作れるようになります。