こんにちは、ユーキです。
テキストファイルや、CSVファイルをEXCELに取り込めたらいいのにな?と思うことはないですか?
VBAを使えばそれができます。
今回は、ファイルを取り込み、その内容をEXCELに表示するやり方を紹介します。
ファイルの取り込み
対象ファイルを開く
まずは対象ファイルを開きます。開くには、Open ステートメントを使用します。
今回、読み込むファイルは「C:\Temp\」に存在する「DataFile1.txt」とします。
Open "C:\Temp\DataFile1.txt" For Input As #5
Close #5
「#数字」は開いたファイルを扱うためのキーワード(ファイル番号)になります。数字部分は1 以上 511 以下であれば、どんな数字でも問題ありません。
ファイルは開いたら必ず閉じておきましょう。
内容を読み取る
開いたファイルを読み込むには、Line Input # ステートメントを使用します。
読み込むファイルの内容は以下のようにします。
りんご,200#2022/07/01,10
みかん,100#2022/09/15,20
パイナップル,500#2022/08/28,30
Dim fileText As String
Open "C:\Temp\DataFile1.txt" For Input As #5
Do Until EOF(5) '()内の数字はファイル番号
Line Input #5, fileText ’1行ごとに読み込み
Debug.Print fileText
Loop
Close #5
EXCELに書き出す
読み込んだファイルの内容をExcelに出力していきましょう。
Dim rowIdx As Long
rowIdx = 2 '出力するExcelの開始行
Dim fileText As String
Open "C:\Temp\DataFile1.txt" For Input As #5
Do Until EOF(5) '()内の数字はファイル番号
Line Input #5, fileText '1行ごとに読み込み
ActiveSheet.Cells(rowIdx, 1).Value = fileText
rowIdx = rowIdx + 1
Loop
Close #5
カンマで区切って表示する
読み込んだ1行をそのまま表示してもいいですが、カンマで区切られたデータごとにセルに表示する方法を考えてみましょう。
今回は、カンマで区切られているので、Split関数を使います。
Dim rowIdx As Long
Dim colIdx As Long
Dim i As Integer
Dim arrTxt As Variant
Dim fileText As String
rowIdx = 2 '出力するExcelの開始行
Open "C:\Temp\DataFile1.txt" For Input As #5
Do Until EOF(5) '()内の数字はファイル番号
Line Input #5, fileText '1行ごとに読み込み
colIdx = 1
arrTxt = Split(fileText, ",")
For i = 0 To UBound(arrTxt)
ActiveSheet.Cells(rowIdx, colIdx).Value = arrTxt(i)
colIdx = colIdx + 1
Next
rowIdx = rowIdx + 1
Loop
Close #5
動作検証
では、早速動かしてみましょう。読み込むファイルの内容は以下の通りです。
りんご,200#2022/07/01,10
みかん,100#2022/09/15,20
パイナップル,500#2022/08/28,30
実行すると、以下のようになります(列幅は手動で調整しています)。
まとめ
今回は、ファイルを読み込んで、EXCELに表示するやり方の紹介でした。
- Open ステートメントでファイルを開く
- 開いたファイルの読み込みは、Line Input # ステートメントを使う
少しでもお役に立てば、幸いです。