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変数の内容を示す値を返します。
ExcelのVBAについてのQ&A掲示板

↑ExcelのVBA全般について分からない事があればこちらの掲示板よりご質問ください^^

VBAのInternetExplorer操作入門

↑ExcelのVBAをマスターできたら、エクセルVBAのIE(InternetExplorer)操作にも挑戦してみてください^^

VBAのIE制御入門RSS

RSSフィードを登録すると最新記事を受け取ることができます。

VBAIE操作のスカイプレッスン

エクセルVBAのステートメント

こちらでは、エクセルVBAの事例で利用したステートメントをまとめたものです。ExcelのVBAには様々な機能が用意されていますので一度ご確認ください。

スポンサー リンク

エクセルVBAのオブジェクト

こちらでは、エクセルVBAの事例で利用したオブジェクトをまとめたものです。ExcelのVBAには様々な機能が用意されていますので一度ご確認ください。

スポンサー リンク

エクセルVBAのプロパティ

こちらでは、エクセルVBAの事例で利用したオブジェクトのプロパティをまとめたものです。ExcelのVBAには様々な機能が用意されていますので一度ご確認ください。

エクセルVBAのメソッド

こちらでは、エクセルVBAの事例で利用したオブジェクトのメソッドをまとめたものです。ExcelのVBAには様々な機能が用意されていますので一度ご確認ください。

エクセルVBAのイベント

こちらでは、エクセルVBAの事例で利用したオブジェクトのイベントをまとめたものです。ExcelのVBAには様々な機能が用意されていますので一度ご確認ください。