開いているファイルの読み取り位置または書き込み位置を設定(Seek ステートメント)
Seek ステートメント
Open ステートメント で開いているファイルで、次に読み取りを行う位置または、書き込みを行う位置を設定します。
Seek #filenumber, position
引数・戻り値
- filenumber ・・・ Open ステートメント で、割り当てられたファイル番号を指定します。
- position ・・・ 次の読み取りまたは書き込み操作を行う位置を 1 ~ 2,147,483,647 の範囲の数値で指定します。この時、Random モード でファイルを開いている場合はレコード位置、それ以外のモードで開いている場合はバイト位置を指定します。
開いているファイルの読み取り位置または書き込み位置を取得する場合は、Seek 関数 を使用します。
Get ステートメントおよび Put ステートメントで、レコード位置(バイト位置)が指定されている場合は、Seek ステートメント で指定されている位置よりも優先されます。
Seek ステートメントで、ファイルの末尾を越える位置に設定した後にファイルの書き込み操作を行うと、ファイルが拡張されます。
Seek ステートメントで、ファイルの位置を負または 0 または 2,147,483,647 を越える位置に設定するとエラーが発生します。
Seek ステートメント 使用例
サンプルVBAソース 1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
Sub Sample_Seek1() Dim FileName As String Dim FNum As Integer Dim str As String FileName = "C:\Documents\mydata\file01.txt" FNum = FreeFile 'ファイル番号取得 str = String(FileLen(FileName), " ") 'ファイルを開く(バイナリモード) Open FileName For Binary As #FNum 'バイト位置の設定 Seek #FNum, 28 '設定された位置からの読み込み Get #FNum, , str 'ファイルを閉じる Close #FNum MsgBox str End Sub |
実行結果 1
読み込むファイル(file01.txt)の内容
サンプルVBAソース 1 を実行した結果
サンプルVBAソース 2
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
Sub Sample_Seek2() Dim FileName As String Dim FNum As Integer Dim num As Long Dim str As String FileName = "C:\Documents\mydata\test05.txt" FNum = FreeFile 'ファイルを開く(バイナリモード) Open FileName For Binary As #FNum num = 10 str = "あいう" 'バイト位置の設定 Seek #FNum, num '設定した位置に、str を書き込む Put #FNum, , str 'ファイルを閉じる Close #FNum End Sub |
実行結果 2
書き込むファイル(test05.txt)の内容
サンプルVBAソース 2 を実行後の test05.txt の内容
サンプルVBAソース 3
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
Sub Sample_Seek3() Dim myRecord As Record Dim FileName As String Dim FNum As Integer FileName = "C:\Documents\mydata\test02.txt" FNum = FreeFile 'ファイルを開く(ランダムアクセスモード) Open FileName For Random As #FNum Len = Len(myRecord) 'レコード位置を設定 Seek #FNum, 3 Get #FNum, , myRecord With myRecord MsgBox .ID & ":" & .Name & .RDate End With 'ファイルを閉じる Close #FNum End Sub |
実行結果 3
関連記事
-
-
ディレクトリまたはフォルダの削除(RmDir ステートメント)
ディレクトリまたはフォルダの削除 ディレクトリまたはフォルダを削除するには、Rm …
-
-
特殊フォルダを取得(wsh.SpecialFolders)
CreateObject 関数:特殊フォルダを取得(WSH.SpecialFol …
-
-
テキストファイル(Open ステートメント・Close ステートメント)
新規ブックを開かずにテキストファイルを開く OpenText ステートメント を …
-
-
フォルダ名・ファイル名を変更(Name ステートメント)
フォルダ名およびファイル名を変更 Name ステートメント で、ファイル、ディレ …
-
-
Excelでテキストファイルを開く(OpenText メソッド)
Excelでテキストファイルを開く OpenText メソッドで、テキストファイ …
-
-
テキストファイル:データを読み込む(Input # ステートメント)
Input # ステートメント Open ステートメント をシーケンシャル入力モ …
-
-
FileDialog オブジェクトを取得する(FileDialog プロパティ)
FileDialog プロパティ FileDialog オブジェクト を取得しま …
-
-
テキストファイル:データを書き込む(Print # ステートメント)
Print # ステートメント Open ステートメント をシーケンシャル出力モ …
-
-
「ファイル」ダイアログボックスを表示・設定(FileDialog オブジェクト)
FileDialog オブジェクト FileDialog オブジェクト のメソッ …
-
-
開いているファイルのサイズ・位置の取得(LOF 関数・Loc 関数)
LOF 関数 Open ステートメント により開かれたファイルのサイズをバイト単 …