VB6・VBA関数メモ:Openステートメント

Openステートメントについてメモしておきます。

このステートメントはファイルの読み書きをする際に使用します。
新規のファイルを作成することもできます。

ファイルを開いたら必ずCloseステートメントで閉じるようにしましょう。
閉じないと処理が終わってもロックがかかったままでファイルにアクセスできなくなってしまいます。
(「あとぜき」はマナーですよね)


概要

Open PathName For Mode [Access Access] [Lock] AS #FileNmber [Len=RecLength]
機能 ファイルを開いて、ファイルへ入出力できるようにする。
引数 PathName ファイル名、またはファイルパス
Modeファイル モード
Input読み込みモード
Output書き込み(上書き)モード
Append書き込み(追記)モード
Randomランダムアクセスモード
Binaryバイナリモード
Access(省略可)
ファイルに対する処理内容
Read読み込み専用
Write書き込み専用
Read Write読み書き
Lock(省略可)
ファイルのアクセス制御
Shared他プロセスからの読み書き可
Lock Read他プロセスからの読み込み不可
Lock Write他プロセスからの書き込み不可
Lock Read Write他プロセスからの読み書き不可
FileNmber 任意のファイル番号
1〜511の範囲の数値
通常はFreeFile関数で取得
RecLength (省略可)
Randomモードの場合はレコード長
Randomモードでない場合はバッファ容量
32,767バイト以下の数値


使用例

説明 記述例 出力
ファイルを開く
(ファイル読み込み)

※ファイルがない場合はエラー
Dim str As String
Dim n   As Integer

n = FreeFile
Open "Sumple.txt" For Input As #n

Do Until EOF(n)
    Input #n, str
    Debug.Print str
Loop

Close #n
Sumple.txtの
データを出力
ファイルを開く
(ファイル上書き)

※ファイルがない場合は作成
Dim n   As Integer

n = FreeFile
Open "Sumple.txt" For Output As #n

Print #n, "abc"
Print #n, "123"
Print #n, "あいう"

Close #n
(Sumple.txt)
abc
123
あいう
ファイルを開く
(ファイル追記)

※ファイルがない場合は作成
Dim n   As Integer

n = FreeFile
Open "Sumple.txt" For Append As #n

Print #n, "うえお"
Print #n, "789"
Print #n, "XYZ"

Close #n
(Sumple.txt)
abc
123
あいう
うえお
789
XYZ
ランダムアクセスモードで
ファイルの読み書き
Public Type MyType
    num  As Integer
    str  As String * 3
    date As Date
End Type
Dim rec As MyType
Dim str As String
Dim n   As Integer
Dim i   As Long

n = FreeFile
Open "Sumple.txt" For Random As #n Len = Len(rec)

'書き込み
For i = 1 To 5
    rec.num = i
    rec.str = Chr(Asc("A") + i - 1)
    rec.date = DateAdd("d", i - 1, Date)
    
    Put #n, i, rec
Next i

'読み込み
For i = 1 To 5
    Get #n, i, rec
    
    str = ""
    str = str & rec.num
    str = str & ":"
    str = str & rec.str
    str = str & ":"
    str = str & Format(rec.date, "MM/DD")
    Debug.Print str
Next i

Close #n
1:A  :01/19
2:B  :01/20
3:C  :01/21
4:D  :01/22
5:E  :01/23
読み込み専用として開く
(書き込み時はエラー)
Dim rec As MyType
Dim n   As Integer

n = FreeFile
Open "Sumple.txt" For Random _
	Access Read As #n Len = Len(rec)

rec.num = 1
rec.str = "A"
rec.date = Date

Put #n, , rec

Close #n
エラー
書き込み専用として開く
(読み込み時はエラー)
Dim rec As MyType
Dim n   As Integer

n = FreeFile
Open "Sumple.txt" For Random _
	Access Write As #n Len = Len(rec)

Get #n, , rec

Close #n
エラー
ファイルを開いている間は
他プロセスからの読み込み禁止

※例では
 アプリケーション1で
 ファイルをCloseするまで、
 アプリケーション2では
 ファイルをInputモードで開けない
'(アプリケーション1)
Dim n   As Integer

n = FreeFile
Open "Sumple.txt" For Input Lock Read As #n
'(アプリケーション2)
Dim n   As Integer

n = FreeFile
Open "Sumple.txt" For Input As #n

Close #n
エラー
ファイルを開いている間は
他プロセスからの書き込み禁止

※例では
 アプリケーション1で
 ファイルをCloseするまで、
 アプリケーション2では
 ファイルをOutputモードで開けない
※Appendモードでも同様
'(アプリケーション1)
Dim n   As Integer

n = FreeFile
Open "Sumple.txt" For Input Lock Write As #n
'(アプリケーション2)
Dim n   As Integer

n = FreeFile
Open "Sumple.txt" For Output As #n

Close #n
エラー


コメント
コメントする








    
この記事のトラックバックURL
トラックバック