テキストファイルの内容をエクセルシート上に読み込む
Q.会社の会計ソフトから出力されるテキストファイルをExcelに自動で取り込みたいのですがVBAで可能なのでしょうか?
もちろんVBAを使って可能です。
テキストファイルを開いていちいちコピー&ペーストですと手間なケースがありますので是非VBAのやり方を覚えてみましょう。
題材として、簡単な電話帳を取り上げてみます。
下記の内容のファイルを、c:\tmp フォルダに 電話帳.txt として作成します。
=== ファイル始まり
鈴木一郎,080-1111-2222,03-3333-4444
田中次郎,080-5555-6666,042-777-8888
佐藤花子,050-9999-1234,06-5678-9012
=== ファイル終わり
このようなカンマ「,」でデータを区切ったファイルの形式を”CSV形式”と呼びます。
さてファイルの準備ができたら、ExcelからVisual Basic Editorを開き、下記のプログラムを入力します。
そのさい、プログラムで FileSystemObject というオブジェクト(プログラム中★の部分)を使うために、「ツール」メニューの「参照設定」で「Microsoft Scripting Runtime」を参照設定しておきます。
Sub ReadTelephoneData()
Dim fso As New FileSystemObject ‘★
Dim file As file
Dim stream As TextStream
Dim lineData As Variant
Dim row As Integer: row = 1
Set file = fso.GetFile(“c:\tmp\電話帳.txt”)
Set stream = file.OpenAsTextStream
With stream
Do Until .AtEndOfStream = True
lineData = Split(.ReadLine, “,”)
Cells(row, 1).Value = lineData(0)
Cells(row, 2).Value = lineData(1)
Cells(row, 3).Value = lineData(2)
row = row + 1
Loop
.Close
End With
End Sub
プログラムが完成したら、「デバッグ」メニューの「VBAProjectのコンパイル」をして、エラーが出ないことを確認します。
シートの画面に戻り、「開発」リボン※の「マクロ」で、上記のプログラムの名称「ReadTelephoneData」を実行すると、シート上にテキストファイルの内容が出力されます。
とても簡単な作りですが、テキストファイルの列を増やしてみたり、Excelシート上の出力位置を変えてみたり(Cellsのところ)、いろいろ変えてみることで日常の作業に活かせるものが他にも意外にあるかも知れませんね。
※「開発」リボンが見えない場合は、下記の記事を参考にしてください。
https://www.office-kaiketsu.com/excel%ef%bc%88%e3%82%a8%e3%82%af%e3%82%bb%e3%83%ab%ef%bc%89%e3%83%9e%e3%82%af%e3%83%ad%e3%83%bbvba/%e3%83%9e%e3%82%af%e3%83%ad%e9%96%8b%e7%99%ba%e3%82%bf%e3%83%96%e8%a1%a8%e7%a4%ba%ef%bd%9c%e3%82%a8%e3%82%af%e3%82%bb%e3%83%ab2007/