エクセルシート上の内容をテキストファイルに書き込む
以前投稿した「テキストファイルの内容をエクセルシート上に読み込む」の続編です。
さて今回は、逆にエクセルシート上の内容をテキストファイルに書き込んでみましょう。
書き込み先のファイルは前回の読み込み元と同じです。c:\tmp フォルダに 電話帳.txt として作成します。
フォルダがなければ作成し直してください。ファイルは今回既にあってもなくてもかまいません。(あったら上書きされます。なかったら作成されます。)
ExcelからVisual Basic Editorを開き、下記のプログラムを入力します。
前回と同じく、プログラムで FileSystemObject というオブジェクトを使うために、「ツール」メニューの「参照設定」で「Microsoft Scripting Runtime」が参照設定されているのを確認しておきましょう。
Sub WriteTelephoneData()
Dim fso As New FileSystemObject
Dim stream As TextStream
Dim lineData(3) As String
Dim row As Integer: row = 1
Set stream = fso.CreateTextFile(“c:\tmp\電話帳.txt”)
With stream
Do Until Cells(row, 1).Value = “” ‘★
lineData(0) = Cells(row, 1).Value
lineData(1) = Cells(row, 2).Value
lineData(2) = Cells(row, 3).Value
.WriteLine (lineData(0) & “,” & lineData(1) & “,” & lineData(2))
row = row + 1
Loop
.Close
End With
End Sub
プログラムが完成したら、「デバッグ」メニューの「VBAProjectのコンパイル」をして、エラーが出ないことを確認します。
シートの画面に戻り、下記のようにシート上に入力します。左上はA1セルになるようにします。
入力できたら「開発」リボン※の「マクロ」で、上記のプログラムの名称「WriteTelephoneData」を実行すると、シート上の内容でテキストファイルが作成(上書き)されます。
プログラムのポイントは、★ の行で、シート上を上から下に辿っていき、データが空白になったら終了するところです。これがないと、延々と空のデータが出力されてしまうのがわかりますか?
こちらもとても簡単な作りですが、慣れたExcelでテキストファイルを簡単に作れますから、いろいろ応用ができそうですね。
※「開発」リボンが見えない場合は、下記の記事を参考にしてください。