OpenOffice.orgのマクロでは、組み込みの構文を使って簡単にファイル(テキストファイル)を扱うことができます。それも、ファイルにアクセスするためのファイル番号を取得し、Openした後に一行ずつInputしていく、という「BASICの正統」に沿った流れです。

ファイル番号の取得には、使用可能なファイル番号を返すFreefile文を使います。続いて取得したファイル番号でファイルのURLを指定し、Openするとアクセスできるようになります。たとえば、

Dim fileNo As Integer

fileNo = Freefile

Open "file:///d:/test.txt" For InPut As #fileNo

とすると、d:\test.txtを読み込み用にOpenできます(url表記ではなく、d:\test.txtとしてもオープンできるようです)。

ファイルがOpenできたら、後はLine Input文で一行(改行まで、読み込みデータに改行は含まれません)ずつ読み込んでいくだけ。読み込みが終わったら、忘れずにCloseしましょう。

読み込み処理時は、読み込むたびに現在位置が更新され、eof()にファイル番号を渡すことで「ファイル終端に達したか」調べることができます。テキストファイルの内容を一行ずつ処理するなら、「ファイル終端に達するまで一行ずつLine Inputしながら処理するループ」といった形になるでしょう。

たとえば、d:\test.txtを一行ずつ読み込んで表示するBASICマクロは、以下のようになります。

sub Main

	Dim fileNo As Integer
	Dim lineText As String

	fileNo = Freefile

	Open "file:///d:/test.txt" For InPut As #fileNo

	While not eof(fileNo)

		Line Input #fileNo, lineText

		MsgBox lineText

	Wend

	Close #fileNo

end sub

なお、今回のマクロではローカルのファイルで試してみましたが、Open時のurl指定にネット上のhttp文書を指定することでネット上のファイルにアクセスすることも可能です。OpenOffice.orgの文書にネット上のデータを簡単に読み込めるので、なかなか便利かもしれません。


創作プログラミングの街 > OpenOffice.orgマクロ開発メモ