ファイル
■概要
ファイルの読み書きの流れは、基本的に他の言語と同様です。 ファイルを開き、開いている間に、読み込み、書き込みを行って、 最後にファイルを閉じます。![]()
■開く
ファイルを開くためには「Openステートメント」を使用します。 ●書式 ・書式例 Open ファイル名(フルパス) For アクセスモード As ファイル番号 ・具体例 Open "Test.txt" For Output As #fileno ファイル名: ファイル名は開く予定のファイルのファイル名を ファイルパス込みで指定します。 パス無しで指定した場合は開いているxlsのフォルダの ファイルパスが使われます。 アクセスモード: アクセスモードはどのような形式でファイルを開くかということです。 アクセスモードの種類は以下の表の通りです。Inputは読み込み専用、OutputとAppendは書き込み専用で、 Outputだと新規ファイルとして書き込みされますが、 Appendでは既存ファイルに追記という形で書き込まれます。 RandomはDBアクセスの際に使用するモードで、 Binaryはバイナリデータとして読み書きをする際に使用します。 ファイル番号: VBAでは管理するファイル番号は自分で決めることができ、 それを開く際にVBAに伝えることで関連付けが行われます。 ですが、ファイル番号はユニークな番号でなければならないので、 「FreeFileステートメント」を使用してファイル番号を取得するのが基本です。 FreeFile: 現在使用可能なファイル番号を返してくれる 書式: FreeFile 具体例: Dim fileno As Integer fileno = FreeFile
■読み込み
●EOF判定 ファイル読み込みの場合、EOF判定が不可欠です。 EOFを知るためには「EOF関数」を使用します。 boolean EOF(ファイル番号): 引数: EOFかどうかを調べるためのファイル番号 戻り値: true => EOF false => EOFではない 内容: ファイル番号のファイルの位置がEOFかどうかを調べる ●ファイル読み込み ファイルの読み込みモードがInputで読み込まれたファイル情報の取得には 「Line Inputステートメント」を使用します。 Line Inputは読み込まれたファイルから1行単位で読み込んでくれます。 ・書式 書式例: Line Input ファイル番号, 読込先の文字列変数 具体例: Line Input #fileno, str ●EOFまで繰り返し処理の例: Dim count As Integer : count = 1 ' EOFじゃなかったら処理を繰り返す Do While Not EOF(fileno) Dim str As String Line Input #fileno, str Cells(count, 1).Value = str Loop
■書き込み
Outputモードで開かれたファイルへの書き込みには 「Printステートメント」を使用します。 Printステートメントは指定されたファイルに対してデータを書き込みます。 書き込まれたデータには改行コードが自動的に挿入されます。 ●書式 ・書式例 Print ファイル番号, 書き込むデータ ・具体例 Print #fineno, "テスト"
■ファイルを閉じる
ファイルを閉じる場合は「Closeステートメント」を使用します。 ●書式 ・書式 Close 閉じるファイル番号 ・具体例 Close #fileno もし、Closeの後ろにファイル番号の指定を行わなければ 開いてあるファイルが全て閉じます。
■サンプルコード(書き込み)
Sub FileWrite() Dim fileno As Integer fileno = FreeFile Open "Test.txt" For Output As #fileno Print #fileno, "テスト" Close #fileno End Sub 実行結果: xlsファイルを作ったフォルダにTest.txtが作成される
■サンプルコード(読み込み)
Sub FileRead() Dim fileno As Integer fileno = FreeFile Open "Test.txt" For Input As #fileno Dim count As Integer : count = 1 Do Until EOF(fileno) Dim str As String Line Input #fileno, str Cells(count, 1).Value = str count = count + 1 Loop Close #fileno End Sub 実行結果: Test.txtを読み込んだ内容をセルに表示していく
■バイナリファイルへの書き込み
バイナリファイルへの書き込みはPrintではなく、「Putステートメント」を使用します。 それ以外はモード指定でBinaryにするだけで、動作可能です。 ●書式 書式例: Put ファイル番号, レコード位置(省略可), 書き出しの内容 具体例: Put #fineno, , data ●コード Private Type Param m_Hp As Integer m_Mp As Integer m_At As Integer m_Def As Integer End Type Sub FileWriteB() Dim prm As Param prm.m_Hp = 10 prm.m_Mp = 100 prm.m_At = 1000 prm.m_Def = 1000 Dim fileno As Integer fileno = FreeFile Open "Test.prm" For Binary As #fileno Put #fileno, , prm Close #fileno End Sub 実行結果: Test.prmにParamの情報が書き込まれる
Inputは読み込み専用、OutputとAppendは書き込み専用で、
Outputだと新規ファイルとして書き込みされますが、
Appendでは既存ファイルに追記という形で書き込まれます。
RandomはDBアクセスの際に使用するモードで、
Binaryはバイナリデータとして読み書きをする際に使用します。
ファイル番号:
VBAでは管理するファイル番号は自分で決めることができ、
それを開く際にVBAに伝えることで関連付けが行われます。
ですが、ファイル番号はユニークな番号でなければならないので、
「FreeFileステートメント」を使用してファイル番号を取得するのが基本です。
FreeFile:
現在使用可能なファイル番号を返してくれる
書式:
FreeFile
具体例:
Dim fileno As Integer
fileno = FreeFile
