VBA でテキスト ファイルを 1 行ずつ読み取る
-
Open
を使用して、VBA でテキスト ファイルを 1 行ずつ読み取る -
FileSystemObject
をTextStream
と共に使用して、VBA でテキスト ファイルを 1 行ずつ読み取る - まとめ
さらに処理するために、ファイルに保存されているすべての電子メールを Microsoft Excel に転送しますか? または、最終選考に残った候補者の情報をファイルに保存しますか?
簡単な自動化プログラムを使用して、これらすべてのタスクを効率的に実行できます。
プログラムでテキスト ファイルを読み取ることは、当然のことです。 他のほとんどすべてのコードでは、ファイルからの入力またはファイルへの出力が必要です。 したがって、ファイル全体を行単位、文字単位などで読み取る方法を理解することが不可欠です。
この記事では、テキスト ファイルを 1 行ずつ読むことに重点を置いています。 テキスト ファイルを読み取るさまざまな方法を検討し、要件に従ってそれらを実装することができます。
Open
を使用して、VBA でテキスト ファイルを 1 行ずつ読み取る
ファイルを開いたり閉じたりするための VBA オプションはいくつかあります。 ワークブック、ファイル、またはフォルダーを開いたり閉じたりするために使用できるコマンドはごくわずかです。
以下は、ファイルを開き、ファイル全体を 1 行ずつ読み取るコード スニペットです。
Sub example()
Dim FileNumber As Integer
Dim Data As String
FileNumber = FreeFile()
Open "Filename" For Input As #FileNumber
While Not EOF(1)
Line Input #FileNumber, Data
//Read a data line from the file
//Perform any required actions on the file
Wend
Close #FileNumber
End Sub
上記のプログラムは、ファイルを開き、ファイルからデータを読み取り、ファイルを閉じることができる単純なコード スニペットです。 コード全体で FileNumber
および Data
変数を宣言します。
FileNumber
を取得するには、FreeFile()
関数が使用されます。 FreeFile()
関数は、ファイルを開くために次に利用可能なファイル番号を返します。
FreeFile()
関数によって返される FileNumber
は、ファイルを開き、ファイルから読み取り、閉じるためにプログラム全体で使用されます。
注: プログラム全体で開いているすべてのファイルを閉じることが重要です。
FileNumber
が FreeFile()
関数によって返された後、Open
ステートメントを使用してファイルを開きます。 Input
または Output
のファイル名を受け取り、次に利用可能な FileNumber
を使用します。
ファイルは、ファイルの終わりに到達しないまで、While
ループ内で 1 行ずつ読み取られます: While Not EOF(FileNumber)
。 ループはデータを 1 行ずつ読み取り、データ ストリームを Data
変数に格納します。
データに対して何らかのアクションを実行する場合は、While
ループ内にコード ステートメントを追加できます。
このプログラムでは、Input
用にファイルが開かれているため、While
ループ内でそこからデータが読み取られます。 ユーザーが Output
モードでデータを開く場合、次のステートメントを使用してデータをファイルに書き込むことができます。
Write #FileNumber, "This is a sample data"
上記のコマンドを使用して、ステートメント "This is a sample data"
がファイルに書き込まれます。
FileSystemObject
を TextStream
と共に使用して、VBA でテキスト ファイルを 1 行ずつ読み取る
2 番目のソリューションでは、Microsoft Scripting Runtime への参照が必要です。 FileSystemObject
データ型が使用され、ファイルを読み取ることができます。
以下は、ファイルを 1 行ずつ読み取るためのコード スニペットです。
Dim fso As FileSystemObject: Set fso = New FileSystemObject
Set txtStream = fso.OpenTextFile(filePath, ForReading, False)
Do While Not txtStream.AtEndOfStream
txtStream.ReadLine
Loop
txtStream.Close
fso
という名前の FileSystemObject
が宣言され、最初の行で設定されます。 txtStream
変数は、ファイルが読み取り用に開かれたときに返される TextStream
オブジェクトです。
TextStream
オブジェクトを使用すると、ユーザーはファイルを読み取り、書き込み、または追加モードで開くことができます。
Do While
ループを使用して、ファイルを 1 行ずつ解析します。 ファイルの終わりは txtStream.AtEndOfStream
によってチェックされ、ファイルは ReadLine
コマンドを使用して読み取られます。
コード スニペットには、ファイルを 1 行ずつ最後まで読み取る方法が記載されています。 ファイルに行を書き込みたい場合は、TextStreamObject.WriteLine
を使用してテキストをファイルに出力します。
プログラムの最後に、読み取り用に開かれたファイルが閉じられます。
注: ファイルは一度に 1つのモードで開くことができます。 ユーザーは、同じファイル オブジェクトに対して書き込みと読み取りを行うことはできません。 異なるモードでファイルを開くには、異なるオブジェクトを作成する必要があります。
まとめ
簡単な VBA ステートメントを使用して、ファイルを簡単に開き、ファイルから読み取り、ファイルに書き込み、ファイルを閉じることができます。 マクロを使用して、異なるファイルに対して同じタスクを実行できます。 したがって、Microsoft Office が提供する自動化機能は信じられないほど高く、称賛に値します。
Hello, I am Bilal, a research enthusiast who tends to break and make code from scratch. I dwell deep into the latest issues faced by the developer community and provide answers and different solutions. Apart from that, I am just another normal developer with a laptop, a mug of coffee, some biscuits and a thick spectacle!
GitHub