次の方法で共有


Seek ステートメント

Open ステートメントを使用して開いたファイル内で、次の読み取り/書き込み操作のための位置を設定します。

構文

Seek [ # ] filenumber, position

Seek ステートメントの構文には、次の指定項目があります。

指定項目 説明
filenumber 必須。 任意の有効なファイル番号です。
position 必須です。 次の読み取り/書き込み操作の対象となる位置を表す 1 ~ 2,147,483,647 の範囲の数値。

注釈

Get ステートメントおよび Put ステートメントで指定したレコード番号は、Seek で実行したファイルの位置設定を上書きします。

ファイルの末尾を超える Seek 操作の後にファイルへの書き込み操作を実行すると、そのファイルは拡張されます。 負の位置または 0 の位置への Seek 操作を実行しようとすると、エラーが発生します。

この例では、Seek ステートメントを使用して、ファイル内の次の読み取り位置または書き込み位置を設定しています。 この例では、TESTFILE がユーザー定義型 Record を格納しているファイルであると仮定しています。

Type Record ' Define user-defined type. 
 ID As Integer 
 Name As String * 20 
End Type 

Random モードで開いたファイルの場合は、Seek によって次のレコードが設定されます。

Dim MyRecord As Record, MaxSize, RecordNumber ' Declare variables. 
' Open file in random-file mode. 
Open "TESTFILE" For Random As #1 Len = Len(MyRecord) 
MaxSize = LOF(1) \ Len(MyRecord) ' Get number of records in file. 
' The loop reads all records starting from the last. 
For RecordNumber = MaxSize To 1 Step - 1 
 Seek #1, RecordNumber ' Set position. 
 Get #1, , MyRecord ' Read record. 
Next RecordNumber 
Close #1 ' Close file. 

Random モード以外のモードで開いたファイルの場合は、Seek によって次の操作の実行対象になるバイト位置が設定されます。 この例では、TESTFILE が数行のテキストを格納しているファイルであると仮定しています。

Dim MaxSize, NextChar, MyChar 
Open "TESTFILE" For Input As #1 ' Open file for input. 
MaxSize = LOF(1) ' Get size of file in bytes. 
' The loop reads all characters starting from the last. 
For NextChar = MaxSize To 1 Step -1 
 Seek #1, NextChar ' Set position. 
 MyChar = Input(1, #1) ' Read character. 
Next NextChar 
Close #1 ' Close file. 

関連項目

サポートとフィードバック

Office VBA またはこの説明書に関するご質問やフィードバックがありますか? サポートの受け方およびフィードバックをお寄せいただく方法のガイダンスについては、Office VBA のサポートおよびフィードバックを参照してください。