2011年4月4日月曜日

テキストファイルの読み込み (1)

Sub ExampleReadFile()
       Dim lngFileSize As Long
       Dim strFileName As String
       Dim intFileNo As Integer
       Dim strData As String
       Dim intCount As Long
       '
       '件数カウンタの初期化
       intCount = 0    
       '
       'ファイルのオープン
       strFileName = "D:\SampleFolder\sample.txt"
       intFileNo = FreeFile()
       Open strFileName For Input As #intFileNo
       '
       'ファイルがEOF(End Of File)になるまで読み込む
       Do While Not EOF(intFileNo)
intCount = intCount + 1
               Line Input #intFileNo, strData
       Loop
       '
       'ファイルのクローズ
Close #intFileNo
       '
Msgbox("データ件数 : " & intCount & " 件") 
End Sub
 
上記コードは、通常の(CRLFで改行された)テキストファイルを読み込む
サンプルである。

=========================================================
まず、ファイルを読み込む為に、ファイルをオープンする。
ファイルをオープンする為には、Open ステートメントを使用する。
Open ステートメントの書式は下記の通り :
 
Open Pathname For Mode [Access IOMode] [Lock] As #Filenamber  ⇒
 ⇒ [Len = Reclength]
 
Pathname には、読み込むファイルのファイル名を示す文字列式を記述する。
Pathname には、フォルダ名およびドライブ名を含めて指定することができる。
 
Mode には、ファイルを開くときの下記いずれかのキーワードを指定する :
     Append : 追加モードで出力する場合
     Binary  : バイナリーモードで入力または出力する場合
     Input    : 入力モードの場合
     Output : 出力モードの場合
     Random : ランダムアクセスモードの場合
 上記サンプルコードの場合は、Input キーワードを指定する。
 
IOMode には、開くファイルに対して行う処理を示す、次のいずれかのキーワード
を指定する :
     Read  :  読み取り専用
     Write  :  書き込み専用
     Read Write : 読み取りと書き込み
IOMode は省略可。
 
Lock には、開くファイルに対する、他のプロセスからのアクセスを制御する、
次のいずれかのキーワードを指定 :
     Shared : ファイルを他のアプリケーションでも開けるようにする
     Lock Read : ファイルを読み取り保護する
     Lock Write : ファイルを書き込み保護する
     Lock Read Write : ファイルアクセスを禁止する
Lock は省略可。
 
Filenumber には、0~511の範囲で任意のファイル番号を指定する。
Filenumber はファイル毎に重複しないように指定しなければならない為、
FreeFile 関数を使用して、使用可能なファイル番号を取得することを推奨する。
 
Reclength は、ランダムアクセスファイルの場合のレコード長を指定する。
Reclength は省略可。
 
=========================================================
FreeFile 関数は、使用可能なファイル番号をを返すファイル入出力関数。
FreeFile 関数の書式は下記の通り :
 
FreeFile()
 
FreeFile 関数は、戻り値として整数型(Integer)の値を返す。

=========================================================
ファイルを読み込むとき、ファイル末尾に達した後、更に読み込もうとする
とエラーが発生する。これを防ぐ為、Random モード、または、Input モード
で開いたファイルについて、ファイルポインタがファイル末尾に達したか否か
を確認するために、EOF関数を用いる。
EOF 関数の書式は下記の通り :

EOF(Filenamber)

Filenumber はOpen ステートメントで Input モードで指定したファイルの
Filenumber を指定する。指定した Filenumber のファイルのポインタが
ファイル末尾に達したとき戻り値として True を返し、それ例外の場合は
False を返す。

(2)に続く

0 件のコメント:

コメントを投稿