テキストファイル(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 | 
実行結果
関連記事
-  
              
- 
      ディレクトリまたはフォルダの作成(MkDir ステートメント)ディレクトリまたはフォルダの作成 新しいディレクトリまたはフォルダを作成するには … 
-  
              
- 
      FileDialog オブジェクトを取得する(FileDialog プロパティ)FileDialog プロパティ FileDialog オブジェクト を取得しま … 
-  
              
- 
      Excel を終了する(Quit メソッド)Excel を終了する(Quit メソッド) Quit メソッドを実行すると、E … 
-  
              
- 
      テキストファイル:データを読み込む(Get ステートメント)Get ステートメント Open ステートメント をランダムアクセスモード(Ra … 
-  
              
- 
      開いているファイルの読み取り位置または書き込み位置を設定(Seek ステートメント)Seek ステートメント Open ステートメント で開いているファイルで、次に … 
-  
              
- 
      XlBuiltInDialog 列挙型XlBuiltInDialog 列挙型 Excel の組み込みダイアログボックス … 
-  
              
- 
      フルパスからファイル名、パスを取得するフルパスからファイル名のみを取得する フルパスからファイル名を取得するには、Di … 
-  
              
- 
      「ファイルを開く」ダイアログボックスを表示(GetOpenFilename メソッド)GetOpenFilename メソッド ファイル名を取得するための、「ファイル … 
-  
              
- 
      特殊フォルダを取得(wsh.SpecialFolders)CreateObject 関数:特殊フォルダを取得(WSH.SpecialFol … 
-  
              
- 
      ディレクトリまたはフォルダの削除(RmDir ステートメント)ディレクトリまたはフォルダの削除 ディレクトリまたはフォルダを削除するには、Rm … 
 
        
