開いているファイルの読み取り位置または書き込み位置を設定(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
関連記事
-
FileDialogFilters コレクション・FileDialogFilter オブジェクト
FileDialogFilters コレクション FileDialog オブジェ …
-
「ファイルを開く」ダイアログボックス(FindFile メソッド)
FindFile メソッド 「ファイルを開く」ダイアログボックスを表示します。G …
-
特殊フォルダを取得(wsh.SpecialFolders)
CreateObject 関数:特殊フォルダを取得(WSH.SpecialFol …
-
ファイルのタイムスタンプを取得(FileDateTime 関数)
ファイルのタイムスタンプを取得 ファイルのタイムスタンプを取得するには、File …
-
XlBuiltInDialog 列挙型
XlBuiltInDialog 列挙型 Excel の組み込みダイアログボックス …
-
「名前を付けて保存」ダイアログボックスを表示(GetSaveAsFilename メソッド)
GetSaveAsFilename メソッド 「名前を付けて保存」ダイアログボッ …
-
ディレクトリまたはフォルダの作成(MkDir ステートメント)
ディレクトリまたはフォルダの作成 新しいディレクトリまたはフォルダを作成するには …
-
ファイル属性の取得・設定(GetAttr 関数・SetAttr ステートメント)
ファイル属性の取得(GetAttr 関数) ファイルやフォルダ(ディレクトリ)の …
-
フォルダ名・ファイル名を変更(Name ステートメント)
フォルダ名およびファイル名を変更 Name ステートメント で、ファイル、ディレ …
-
「ファイル」ダイアログボックスを表示・設定(FileDialog オブジェクト)
FileDialog オブジェクト FileDialog オブジェクト のメソッ …