Seek関数
Seek関数は、VBA関数の中でファイル・フォルダに関する関数に分類される関数です。
目次
Seek関数とは
Seek関数は、Open ステートメントを使用して開いたファイルの現在の読み込み位置または書き込み位置を示す長整数型 (Long) の値を返します。
構文 | Seek(filenumber) | |
---|---|---|
引数 | 省略 | 説明 |
filenumber | × | 引数 filenumber には有効なファイル番号 を整数型 (Integer) で指定します。 |
Seek 関数は、1 ~ 2,147,483,647 (= 2^31-1) の範囲の値を返します。各ファイル アクセス モードの戻り値は、次のとおりです。
返り値
ファイル モード | 戻り値 |
---|---|
ランダム アクセス モード (Random) | 読み込みまたは書き込みが行われる次のレコードの番号。 |
バイナリ モード (Binary) | 次の操作を開始するバイト位置。ファイル内の先頭バイトは 1、次のバイトは 2 になります。 |
シーケンシャル出力モード (Output) | 次の操作を開始するバイト位置。ファイル内の先頭バイトは 1、次のバイトは 2 になります。 |
シーケンシャル出力モード (Append) | 次の操作を開始するバイト位置。ファイル内の先頭バイトは 1、次のバイトは 2 になります。 |
シーケンシャル入力モード (Input) | 次の操作を開始するバイト位置。ファイル内の先頭バイトは 1、次のバイトは 2 になります。 |
Seek関数のサンプルコード
次の例は、Seek 関数を使って、ファイル内の現在の読み書き位置を返します。この例では、ファイル TESTFILE は、ユーザー定義の Record 型のレコードが 5 つ含まれるものと仮定します。
Sub Sample
Type Record ' ユーザー定義型を定義します。
ID As Integer
Name As String * 20
End Type
End Sub
ランダム アクセス モード (Random) で開いたファイルでは、Seek 関数は読み書きできる次のレコード番号を返します。
Sub Sample
Dim MyRecord As Record ' 変数を宣言します。
' ファイルをランダム アクセス モードで開きます。
Open "TESTFILE" For Random As #1 Len = Len(MyRecord)
Do While Not EOF(1) ' ファイルの終端までループを繰り返します。
Get #1, , MyRecord ' 次のレコードを読み込みます。
Debug.Print Seek(1) ' レコード番号をイミディエイト ウィンドウに表示します。
Loop
Close #1 ' ファイルを閉じます。
End Sub
ランダム アクセス モード以外のモードで開いたファイルでは、Seek 関数は読み書きする次のバイト位置を返します。ファイル TESTFILE は、複数のテキスト行のあるファイルと仮定します。
Sub Sample
Dim MyChar
Open "TESTFILE" For Input As #1 ' ファイルをシーケンシャル入力モードで開きます。
Do While Not EOF(1) ' ファイルの終端までループを繰り返します。
MyChar = Input(1, #1) ' データの次の文字を読み込みます。
Debug.Print Seek(1) ' 位置をイミディエイト ウィンドウに表示します。
Loop
Close #1 ' ファイルを閉じます。
End Sub
実行結果
解説
ファイル・フォルダに関する関数一覧
関数名 | 内容 |
---|---|
CurDir | 指定したドライブの現在のパスを返します。 |
Dir | 指定したパターンやファイル属性と一致するファイルまたはフォルダの名前を返します。 |
EOF | ファイルの現在位置が末尾かどうかを調べて結果を返します。 |
FileAttr | ファイルから指定した種類の情報を返します。 |
FileDateTime | ファイルの作成日時または最後に修正した日を返します。 |
FileLen | ファイルのサイズを返します。 |
FreeFile | 指定したファイル番号の範囲から、次に使用可能なファイル番号を返します。 |
GetAttr | ファイルまたはフォルダの属性を返します。 |
Loc | 開いているファイルの読込位置または書き込み位置を返します。 |
LOF | 開いているファイルの長さを返します。 |
Seek | 開いているファイルの読込位置または書き込み位置を返します。 |
Tab | 文字の出力位置を移動します。 |
VarType | 変数の内容を示す値を返します。 |