テキストファイルをパソコン内部で開く方法
テキストファイルをパソコン内部で、開くには、Open【オープン】ステートメントを使用します。テキストファイルの内容を入出力するためにパソコン内部でファイルを開くため、その内容が画面に表示されることはありません。
開いたファイルはClose【クローズ】ステートメントで閉じるまでの間、引数Filenumber【ファイルナンバー】に指定したファイル番号を使用して参照します。
Open【オープン】ステートメントの書式と設定値の説明
[]内は省略可能です。
Open
pathname For mode [Access access] [lock] As [#]filenumber[ Len=reclength]
- PathName 【パスネーム】(必須)
開きたいテキストファイルの名前を含むパスをダブルクォーテーションで囲んで指定します。ファイル名だけを指定した場合はカレントフォルダーのファイルが対象となります。指定したファイルが存在しない場合、引数Mode【モード】にInput【インプット】以外のモードが指定されていると指定されたファイルが新規作成されます。 - mode【モード】(必須)
ファイルを開くときのモードを以下のキーワードで指定します。キーワード モード Input シーケンシャル入力モード Output シーケンシャル出力モード Append 追加モード Binary バイナリモード Random ランダムアクセスモード(既定値) ※シーケンシャルモードとは、規則的に継続している形式という意味です。
※バイナリモードとは、画像などのデータ形式を表します。 - access【アクセス】(省略可)
開くファイルに対する処理を示す、次のキーワードのうちいずれかを指定します。キーワード 内容 Read リード 読み込み Write ライト 書き込み Read Write リードライト読み書き込み - lock【ロック】(省略可)
開かれたファイルに対する他のプロセスからの操作の制限を表す次のキーワードのうちいずれかを指定します。キーワード 内容 Shared シェアード 共用 Lock Read ロックリード読み込みロック Lock Write ロックライト書き込みロック Lock Read Write ロックリード読み書き込みロック - filenumber【ファイルナンバー】(必須)
開いたファイルに番号を割り当てます。1~511の値を指定します。 - reclength【レクレングス】(省略可)
32,767 バイト以下の数値。ランダム アクセス用に開かれたファイルでは、この値はレコード長です。シーケンシャル ファイルでは、この値はバッファリングされる文字数です。
※引数filenumber【フィルターナンバー】で、すでに使用しているファイル番号を指定するとエラーになります。このエラーを防ぐ方法としてFreefile【フリーファイル】関数 でファイル番号を取得する方法があります。
※シーケンシャルモード、追加モードの場合開いているファイルを異なるファイル番号で同時に開こうとするとエラーになります。これらのモードで再度ファイルを開くときは、開いているファイルをClose【クローズ】ステートメントで閉じてから開いてください。シーケンシャルモード、バイナリモード、ランダムアクセスモードの場合は、一つのファイルを異なるファイル番号で開くことができます。
カンマ区切り単位でテキストファイルを読み込む方法
Open【オープン】ステートメントによって、シーケンシャル入力モード(Input)で開かれたテキストデータをカンマで区切られた単位で変数に格納するにはInput #【インプットハッシュ】ステートメントを使用します。
Input #【インプットハッシュ】ステートメント
Input #【インプットハッシュ】ステートメントの書式と設定値の説明
Input #Filenumber,Varlist,・・・・
- Filenumber【ファイルナンバー】(必須)
Open【オープン】ステートメントで割り当てたファイル番号を指定します。 - Varlist【バーリスト】(必須)
テキストファイルの内容を格納する変数を指定します。複数指定する場合は、カンマで区切って指定し、テキストファイル内のデータ項目の個数と順番を一致させます。
※ファイルの末尾を超えて次のデータを読み込もうとするとエラーが発生します。このエラーを防ぐために EOF【イーオーエフ】関数 を使用して、ファイルの末尾に達したらファイルの読み込みを終了させます。
※Input #ステートメントで読み込んだデータをテキストファイルに書き込むときはWrite #【ライトハッシュ】ステートメントを使用します。
パソコン内部で開いたテキストファイルを閉じる方法
Open【オープン】ステートメントで開いたファイルを閉じるには、Close #【クローズハッシュ】ステートメントを使用します。
Close #【クローズハッシュ】ステートメントを実行するとファイルに割り当てられていたファイル番号が解放されます。
Close #【クローズハッシュ】ステートメント
Close #【クローズハッシュ】ステートメントの書式と設定値の説明
[]内は省略可能です。
Close #[Filenumber]
- Filenumber【ファイルナンバー】(省略可)
Openステートメントで割り当てたファイル番号を指定します。複数指定する場合は、カンマで区切って指定します。省略するとすべてのファイルを閉じます。
同じフォルダー内のテキストファイルをシートに読み込むコードと解説
このマクロが記述されたブックと同じフォルダーにあるテキストファイルを読み込みます。例では、「売上データ.txt」ファイルを読み込みます。4項目(4列)のデータを想定しています。
Sub テキストファイルの読み込み() Dim ファイルNO As Integer Dim データ(3) As String Dim i As Integer Dim j As Integer Worksheets(1).Activate ファイルNO = FreeFile Open ThisWorkbook.Path & "¥売上データ.txt" For Input As #ファイルNO i = 1 Do Until EOF(ファイルNO) Input #ファイルNO, データ(0), データ(1), データ(2), データ(3) For j = 0 To 3 Cells(i, j + 1).Value = データ(j) Next j i = i + 1 Loop Close #ファイルNO End Sub
2行目【Dim ファイルNO As Integer】
Open【オープン】ステートメントで使用するファイルのナンバーを格納する変数「ファイルNO」整数型(Integer)で宣言します。
3行目【Dim データ(3) As String】
Input #【インプットハッシュ】ステートメントで読み込むテキストファイルのデータを格納する配列変数「データ()」を文字列型(String)で宣言します。
4行目【Dim i As Integer】
Do Loop【ドゥルループ】ステートメントで利用されるセルの行番号を表すカウンタ―変数「i」を整数型(Integer)で宣言します。
5行目【Worksheets(1).Activate】
Worksheets【ワークシーツ】プロパティで引数にインデックス番号1を指定して1番目のワークシートを参照しActivate【アクティベイト】メソッドを使用してそのシートをアクティブにします。
6行目【ファイルNO = FreeFile】
FreeFile【フリーファイル】関数を使用して、Open【オープン】ステートメントで、使用できるファイル番号を取得し、変数「ファイルNO」に代入します。
7行目【Open ThisWorkbook.Path & “¥売上データ.txt” For Input As #ファイルNO】
Open【オープン】ステートメントを使用して、このブックと同じフォルダーにある「売上データ.txt」ファイルをファイルNOに格納されているNOでパソコン内部で開きます。
8行目【i = 1】
カウンタ―変数「i」に1を代入します。
9行目【Do Until EOF(ファイルNO)】
Do Until【ドゥアンチル】ステートメントを使用して、データの末尾を返す。EOF【イーオーエフ】関数がTrueを返すまで(データが無くなるまで)処理を繰り返します。
10行目【Input #ファイルNO, データ(0), データ(1), データ(2), データ(3)】
変数「ファイルNO」に格納した番号のファイル内のデータを配列変数データにInput #【インプットハッシュ】ステートメントで読み込んで書き込みます
11行目【For j = 0 To 3】
For Next【フォーネクスト】文で繰り返し処理の始まりです。カウンター変数「j」に0~3になるまで以下の処理を繰り返します。
12行目【Cells(i, j + 1).Value = データ(j)】
i行目、i+1列目のセルに配列変数データのj番目要素に格納した値を代入します。
16行目【Close #ファイルNO】
ファイルを閉じて、変数ファイルNOに格納されている番号のファイルを解放します。
以上で、テキストファイルをパソコン内部で開く方法についての解説を終了します。
ありがとうございました。