企業研修講師派遣のBESTグループ
出張パソコン教室ITスクール
webコンサルティングスクール
パソコンの家庭教師BEST

Home Excel(エクセル) エクセルシート上の内容をテキストファイルに書き込む

以前投稿した「テキストファイルの内容をエクセルシート上に読み込む」の続編です。

images

※以前の記事はこちら
http://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%86%e3%82%ad%e3%82%b9%e3%83%88%e3%83%95%e3%82%a1%e3%82%a4%e3%83%ab%e3%81%ae%e5%86%85%e5%ae%b9%e3%82%92%e3%82%a8%e3%82%af%e3%82%bb%e3%83%ab%e3%82%b7%e3%83%bc%e3%83%88%e4%b8%8a%e3%81%ab%e8%aa%ad/

さて今回は、逆にエクセルシート上の内容をテキストファイルに書き込んでみましょう。

書き込み先のファイルは前回の読み込み元と同じです。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でテキストファイルを簡単に作れますから、いろいろ応用ができそうですね。

※「開発」リボンが見えない場合は、下記の記事を参考にしてください。

http://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/

ご質問や感想は上記からコメントをお願い致します

返信を残す