テキストファイル(Open ステートメント・Close ステートメント)
2016/01/12
新規ブックを開かずにテキストファイルを開く
OpenText ステートメント を使用する場合、テキストファイルを開くたびに新規ブックが作成されます。新規ブックを開かずにテキストファイルを開きたい場合は、Open ステートメント を使用します。開いたテキストファイルは、Open ステートメント の引数で指定した ファイル番号 を使用して参照することができます。テキストファイルを閉じるときは、Close ステートメント を使用します。
Open ステートメント
Open pathname For mode [ Access access lock ] As #filenumber [ Len = reclength ]
引数・戻り値
- pathname ・・・ 開きたいテキストファイルを文字列式でしてします(必須)。ディレクトリまたはフォルダ、およびドライブを含むことができます。
- mode ・・・ ファイルを開く時のモードを以下のキーワードで指定します(必須)。
キーワード
内容
Append
追加モード
Binary
バイナリモード
Input
シーケンシャル入力モード(ファイルの先頭から順に読み込む)
Output
シーケンシャル出力モード(ファイルの先頭から順に書き込む)※上書き
Random
ランダムアクセスモード(既定値)
- access ・・・ 開かれたファイルに対して許可される操作を以下のキーワードで指定します(省略可)。
キーワード
内容
Read
開いたファイルに対して読み込みのみ行います
Wright
開いたファイルに対して書き込みのみ行います
Read Wright
開いたファイルに対して読み書きの両方を行います
- lock ・・・ 開かれたファイルに対する他のプロセスからの操作の制限を以下のキーワードで指定します(省略可)。
キーワード
内容
Shared
他のプロセスからの読み書きの操作を許可します(既定値)
Lock Read
他のプロセスからの読み込みをロックします
Lock Wright
他のプロセスからの書き込みをロックします
Lock Read Wright
他のプロセスからの読み書きの両方をロックします
- filenumber ・・・ 開いたファイルに番号を割り当てます。1 以上 511 以下の整数値を指定します。
- reclength ・・・ 32,767(バイト)以下の数値を指定します。ランダムアクセス用に開かれたファイルでは、この値はレコード長です。シーケンシャル ファイルでは、この値はバッファリングされる文字数です(省略可能)。
引数 filenumber に、すでに使用している番号を指定するとエラーが発生します。まだ使用されていないファイル番号を取得するには、FreeFile 関数 を使用します。
引数 mode に、Output 、Append を指定している場合、開いているファイルを異なるファイル番号で同時に開こうとするとエラーが発生するので注意が必要です。なお、Input 、Binary 、Random を指定している場合は、開いているファイルを異なるファイル番号で開くことができます。
- pathname ・・・ 開きたいテキストファイルを文字列式でしてします(必須)。ディレクトリまたはフォルダ、およびドライブを含むことができます。
- mode ・・・ ファイルを開く時のモードを以下のキーワードで指定します(必須)。
キーワード 内容 Append 追加モード Binary バイナリモード Input シーケンシャル入力モード(ファイルの先頭から順に読み込む) Output シーケンシャル出力モード(ファイルの先頭から順に書き込む)※上書き Random ランダムアクセスモード(既定値) - access ・・・ 開かれたファイルに対して許可される操作を以下のキーワードで指定します(省略可)。
キーワード 内容 Read 開いたファイルに対して読み込みのみ行います Wright 開いたファイルに対して書き込みのみ行います Read Wright 開いたファイルに対して読み書きの両方を行います - lock ・・・ 開かれたファイルに対する他のプロセスからの操作の制限を以下のキーワードで指定します(省略可)。
キーワード 内容 Shared 他のプロセスからの読み書きの操作を許可します(既定値) Lock Read 他のプロセスからの読み込みをロックします Lock Wright 他のプロセスからの書き込みをロックします Lock Read Wright 他のプロセスからの読み書きの両方をロックします - filenumber ・・・ 開いたファイルに番号を割り当てます。1 以上 511 以下の整数値を指定します。
- reclength ・・・ 32,767(バイト)以下の数値を指定します。ランダムアクセス用に開かれたファイルでは、この値はレコード長です。シーケンシャル ファイルでは、この値はバッファリングされる文字数です(省略可能)。
引数 filenumber に、すでに使用している番号を指定するとエラーが発生します。まだ使用されていないファイル番号を取得するには、FreeFile 関数 を使用します。
引数 mode に、Output 、Append を指定している場合、開いているファイルを異なるファイル番号で同時に開こうとするとエラーが発生するので注意が必要です。なお、Input 、Binary 、Random を指定している場合は、開いているファイルを異なるファイル番号で開くことができます。
Close ステートメント
Close [ #filenumber ]
引数・戻り値
- filenumber ・・・ Open ステートメント で、割り当てられたファイル番号を指定します。複数指定することもできます。その場合は、カンマ(,)で区切ります。省略すると開いているすべてのファイルを閉じます。
引数 filenumber に開いていないファイル番号を指定してもエラーは発生しません。この場合、閉じようとしたファイルが閉じられず、再度そのファイルを開こうとした時にエラーが発生してしまうということが起こる可能性があるので注意が必要です。
- filenumber ・・・ Open ステートメント で、割り当てられたファイル番号を指定します。複数指定することもできます。その場合は、カンマ(,)で区切ります。省略すると開いているすべてのファイルを閉じます。
引数 filenumber に開いていないファイル番号を指定してもエラーは発生しません。この場合、閉じようとしたファイルが閉じられず、再度そのファイルを開こうとした時にエラーが発生してしまうということが起こる可能性があるので注意が必要です。
Open ステートメント で開かれたファイルを処理するステートメント
Open ステートメント で開いたファイルを読み込んだり、書き込んだりするときに使用するステートメントの一覧です。
ステートメント | 内容 |
Input # ステートメント | データをカンマで区切られた単位ごとに読み込みます。 |
Line Input # ステートメント | データを1行ごとに読み込みます。 |
Write # ステートメント | カンマ区切りでテキストファイルに書き込みます。 |
Print # ステートメント | 行単位でテキストファイルに書き込みます。 |
Seek ステートメント | テキストファイルの読み取りまたは書き込み位置を設定します。 |
Put ステートメント | テキストファイルにデータを書き込みます。 |
Get ステートメント | テキストファイルのデータを読み込みます。 |
Width # ステートメント | 開いたテキストファイルに、出力行幅を割り当てます。 |
Open ステートメント で開かれたファイルを処理する関数
Open ステートメント で、ファイルを開いた時などに使用する関数の一覧です。
関数 | 内容 |
Input 関数 | Input モード・Binary モードで開かれたファイルから読み取ったすべての文字を文字列型(String)で返します。 |
Seek 関数 | 開いているファイルの現在の読み取り位置または書き込み位置を示す長整数型(Long)の値を返します。 |
EOF 関数 | Random モード・Input モードで開かれたファイルの末尾に到達するまでは False 、末尾に到達すると True を返します。 |
Loc 関数 | 開いているファイルの現在の読み取り位置または書き込み位置を示す長整数型(Long)の値を返します。 |
LOF 関数 | 開いているファイルのファイルサイズ(バイト単位)を表す長整数型(Long)の値を返します。 |
FreeFile 関数 | Open ステートメントで使用できるファイル番号を返します。 |
Open ステートメント 使用例
サンプルVBAソース
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 29 |
Sub Sample_Open() Dim FileName As String Dim FileNum As Integer Dim buf, str FileName = "C:\Documents\user01.txt" FileNum = FreeFile 'ファイル番号を取得 'ファイルをシーケンシャル入力モードで開く Open FileName For Input As #FileNum 'ファイルの末尾まで繰り返す Do Until EOF(FileNum) 'テキストファイル 1 行分を変数 buf に格納する Line Input #FileNum, buf str = str & vbCrLf & buf Loop 'ファイルを閉じる Close #FileNum MsgBox str End Sub |
実行結果
関連記事
-
テキストファイル:データを読み込む(Input 関数・InputB 関数)
Input 関数・InputB 関数 Open ステートメントをシーケンシャル入 …
-
Excel を終了する(Quit メソッド)
Excel を終了する(Quit メソッド) Quit メソッドを実行すると、E …
-
EOF 関数
EOF 関数 Open ステートメント をランダムアクセスモード(Random) …
-
テキストファイル:データを書き込む(Print # ステートメント)
Print # ステートメント Open ステートメント をシーケンシャル出力モ …
-
ファイルを削除(Kill ステートメント)
ファイルを削除する ファイルを削除するには、Kill ステートメント を使用しま …
-
開いているファイルの現在の読み取り位置または書き込み位置を取得(Seek 関数)
Seek 関数 Open ステートメント で開いたファイル内の現在の読み取り位置 …
-
組み込みダイアログボックスの引数一覧
組み込みダイアログボックスの引数一覧 Excel の組み込みダイアログボックスを …
-
テキストファイル:データを読み込む(Line Input # ステートメント)
Line Input # ステートメント Open ステートメントをシーケンシャ …
-
テキストファイル:出力する 1 行の幅を設定(Width # ステートメント)
Width # ステートメント Open ステートメント をシーケンシャル出力モ …
-
FileDialogFilters コレクション・FileDialogFilter オブジェクト
FileDialogFilters コレクション FileDialog オブジェ …