ファイルの使用を独占する
ここに載せてあるソースコードは、参考のために載せてあります
サンプルコードは、一番下にLZHとしてあります
Option Explicit '下記の表記でもロックが可能です 'Open "" For Input Lock Read As #1 'Open "" For Input Lock Write As #1 ' 'Open "" For Output Lock Read As #1 'Open "" For Output Lock Write As #1 ' 'Open "" For Append Lock Read As #1 'Open "" For Append Lock Write As #1 ' 'Open "" For Binary Lock Read As #1 'Open "" For Binary Lock Write As #1 'ファイル番号を関数が共有するために 'モジュール変数にしておきます Dim m_fNumber(1 To 2) As Integer Dim m_fPath As String '-------------------------------------- ' 関数集 '-------------------------------------- 'ファイルを開きます Sub SingleFileOpen(ByVal lngNumber As Integer) On Error GoTo ErrProcess 'ファイル番号を生成します m_fNumber(lngNumber) = FreeFile 'ファイルを開きます '(binaryモードに限り、 ' 開いたままでプロシージャを出てもOK) Open m_fPath For Binary As #m_fNumber(lngNumber) Exit Sub ErrProcess: MsgBox Err.Description, vbExclamation End Sub 'ファイルにロックをかけます Sub SingleFileLock(ByVal lngNumber As Integer) On Error GoTo ErrProcess 'ファイルをロックします Lock #m_fNumber(lngNumber) Exit Sub ErrProcess: MsgBox Err.Description, vbExclamation End Sub 'ファイルにデータを書き込みます Sub SingleFileWrite(ByVal lngNumber As Integer) On Error GoTo ErrProcess '日付データを書き込みます Put #m_fNumber(lngNumber), , Now Exit Sub ErrProcess: MsgBox Err.Description, vbExclamation End Sub 'ファイルのロックを解除します Sub SingleFileUnLock(ByVal lngNumber As Integer) 'ファイルのロックを解除します Unlock #m_fNumber(lngNumber) End Sub 'ファイルを閉じます Sub SingleFileClose(ByVal lngNumber As Integer) 'ファイルを閉じます Close #m_fNumber(lngNumber) End Sub '-------------------------------------- ' ファイル操作1 '-------------------------------------- 'ファイルを開くボタンを押しました Private Sub Command1_Click() Command1.Enabled = False SingleFileOpen 1 End Sub 'ロックボタンを押しました Private Sub Command2_Click() Command2.Enabled = False SingleFileLock 1 End Sub 'データの書き込みボタンを押しました Private Sub Command3_Click() Command3.Enabled = False SingleFileWrite 1 End Sub 'ロック解除ボタンを押しました Private Sub Command4_Click() Command4.Enabled = False SingleFileUnLock 1 End Sub 'ファイルを閉じるボタンを押しました Private Sub Command5_Click() Command5.Enabled = False SingleFileClose 1 End Sub '-------------------------------------- ' ファイル操作2 '-------------------------------------- Private Sub Command6_Click() SingleFileOpen 2 End Sub Private Sub Command7_Click() SingleFileLock 2 End Sub Private Sub Command8_Click() SingleFileWrite 2 End Sub Private Sub Command9_Click() SingleFileUnLock 2 End Sub Private Sub Command10_Click() SingleFileClose 2 End Sub '-------------------------------------- ' フォームイベント '-------------------------------------- 'フォームをロードしました Private Sub Form_Load() 'ファイルパスを設定します m_fPath = "c:\windows\デスクトップ\test.txt" 'desktopにtest.txtを生成して '日付と時刻を書き込みます FileWrite m_fPath, Now 'ファイル操作2でロックしなくても 'エラーの確認ができるため '無効にしておきます '(有効にしても問題ありません) Command7.Enabled = False Command9.Enabled = False End Sub 'フォームの終了が呼び出されました Private Sub Form_Unload(Cancel As Integer) '開いているファイルをすべて閉じます Reset End Sub |