Lock、Unlock ステートメント

Open ステートメントを使用して開かれたファイルのすべてまたは一部への他のプロセスによるアクセスを制御します。

構文

Lock [ # ] filenumber, [ recordrange ] . . .ロック解除 [ # ] filenumber, [ recordrange ]

Lock および Unlock ステートメントの構文には、次の指定項目があります。

指定項目 説明
filenumber 必須。 任意の有効なファイル番号です。
recordrange オプション。 ロックまたはロック解除するレコードの範囲です。

Settings

recordrange引数の設定は次のとおりです。

recnumber |[ start ]終了するには

設定 説明
recnumber ロックまたはロック解除が開始される場所のレコード番号 (Random モード ファイル) あるいはバイト番号 (Binary モード ファイル)。
start ロックまたはロック解除する最初のレコードあるいはバイトの番号。
end ロックまたはロック解除する最後のレコードあるいはバイトの番号。

解説

Lock および Unlock ステートメントは、複数のプロセスによる同じファイルへのアクセスが必要になる場合がある環境で使用されます。

Lock および Unlock ステートメントは常にペアで使用されます。 Lock および Unlock への引数は厳密に一致する必要があります。

ファイルの最初のレコードまたはバイトは位置 1 になり、2 番目のレコードまたはバイトは位置 2 になります。これ以降も同様です。 レコードを 1 つだけ指定した場合、そのレコードのみがロックまたはロック解除されます。 レコード範囲を指定し、開始レコード (開始) を省略すると、最初のレコードから範囲の末尾 (末尾) までのすべてのレコードがロックまたはロック解除されます。 recnumber なしで Lock を使用すると、ファイル全体がロックされます。recnumber なしで Unlock を使用すると、ファイル全体がロック解除されます。

シーケンシャル入力またはシーケンシャル出力用にファイルが開かれている場合、Lock および Unlock は、start および end によって指定された範囲に関係なくファイル全体に影響します。

重要

ファイルを閉じたり、プログラムを終了したりする前に、Unlock ステートメントを使用してすべてのロックを必ず削除してください。 ロックを削除しない場合、予期しない結果が生じます。

この例は、Lock および Unlock ステートメントの使用方法を示しています。 レコードが変更されている間、レコードへの他のプロセスによるアクセスは拒否されます。 この例では、 TESTFILE がユーザー定義型 Recordの 5 つのレコードを含むファイルであることを前提としています。

Type Record    ' Define user-defined type. 
    ID As Integer 
    Name As String * 20 
End Type 
 
Dim MyRecord As Record, RecordNumber    ' Declare variables. 
' Open sample file for random access. 
Open "TESTFILE" For Random Shared As #1 Len = Len(MyRecord) 
RecordNumber = 4    ' Define record number. 
Lock #1, RecordNumber    ' Lock record. 
Get #1, RecordNumber, MyRecord    ' Read record. 
MyRecord.ID = 234    ' Modify record. 
MyRecord.Name = "John Smith" 
Put #1, RecordNumber, MyRecord    ' Write modified record. 
Unlock #1, RecordNumber    ' Unlock current record. 
Close #1    ' Close file. 

関連項目

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

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