エクセルVBAでテキストファイルに書き出す最も簡単なプログラム


footprint

みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。

エクセルVBAで様々なテキストファイルを作る方法について、何回かのシリーズにてお伝えできればと思います。

テキストファイルって言うとその拡張子はtxtという印象もありますが、csvだってhtmlだってテキストファイルはテキストファイルですよね。

例えばエクセルシートに記載されているデータをもとに、自由自在にそれらのファイル形式で吐き出せたら便利ですよね?

以下記事などではCSVを取り込む方法についてお伝えしていましたが

エクセルVBAでCSVを読み取る初心者向けの最も簡単なプログラム
エクセルVBAでCSVファイルを取り込む方法について、まずはCSVファイルの内容を1行ずつ取り込んんでデバッグプリントするという初心者向けのとっても簡単なプログラムについて解説をしていきます。

本シリーズはいわばその逆です。

初回の今回は、エクセルシートの値を拡張子txtのテキストファイルとして出力する方法についてお伝えしたいと思います。

スポンサーリンク

エクセルシートを一行ずつテキストファイルに出力するシンプルなプログラム

例えば以下のような何の変哲もないエクセルシートがあります。

元のエクセルデータ
このA列をテキストファイルに書き出すというプログラムを作っていきたいと思います。

プログラムはこちらです。

Sub makeText()
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets(1)

Dim datFile As String
datFile = ActiveWorkbook.Path & "\data.txt"

Open datFile For Output As #1

Dim i As Long
i = 1
Do While ws.Cells(i, 1).Value <> ""
    Print #1, ws.Cells(i, 1).Value
    i = i + 1
Loop

Close #1

MsgBox "data.txtに書き出しました"

End Sub

…なんか、けっこう簡単っぽくないですか?

冒頭で紹介した記事のCSVを取り込むプログラムとかなり似ていますので、あわせてご覧いただければと思います。

テキストファイルに一行ずつ出力するプログラムの流れ

上記プログラムですが、全体の流れとしては

  1. テキストファイルを指定してオープン
  2. エクセルシートでデータの終わりが来るまで一行ずつ繰り返し
    • テキストファイルに現在の行のA列のセルを一行で出力
  3. テキストファイルをクローズ

という流れになっています。

実行結果

このプログラムを実行しますと、実行したエクセルファイルと同じフォルダに「data.txt」が作成されているはずです。

エディタで開いてみると

エクセルVBAで出力したテキストファイル

このように問題なく出力されていますね。

テキストファイルを操作する命令

ではこのプログラムについて細かく解説をしていきますね。

VBAではテキストファイルを扱うための命令が用意されておりますので、それらを利用しています。

テキストファイルのOpenとClose

テキストファイルを扱う際は、扱う前にOpenで開き、扱い終わったらCloseで閉じる必要があります。

一般的な構文としては

Open ファイル名 For 目的 As #番号

で開き

Close #番号

で閉じる、という書き方です。ファイル名はフルパスで指定します。

Openについてですが、目的がOutputになっていればファイルを書き込み用として開きます。該当のファイル名が存在していない場合は、新規のテキストファイルが作成されます。

目的のパラメータをまとめますとそれぞれ以下の通りです。

  • Input:読み込むために開く場合
  • Output:書き込むために開く場合
  • Append:追記する場合に開く場合

「#番号」は一般的には「#1」としておけばOKです。

テキストファイルに一行ずつ書き出す

変数の値をテキストファイルへ一行ずつ出力する場合はPrintを使って

Print #番号, 変数

と書きます。もちろん、変数のかわりに特定のセルの値を

Print #1, ws.Cells(i, 1).Value

と指定することもできます。

まとめ

以上、エクセルVBAでテキストファイルにデータを書き出す最も簡単なプログラムについて解説をしました。

テキストファイルの読み取りとテキストファイルへの書き出しはものすごく似ているので、合わせて覚えてしまえば効率よいですね。

今回は拡張子がtxtのテキストファイルについてお伝えしましたが、次回はいよいよCSVの場合についてもお伝えしていければと思います。

エクセルVBAでエクセルシート上のデータをCSVファイルに書き出す
異なるアプリケーション間でデータを交換する際にはCSV形式がよく使われます。今回は、エクセルVBAでエクセルシートのデータをCSVファイルとして出力する方法についてお伝えしていきます。

どうぞお楽しみに!

連載目次:エクセルVBAでCSVや様々なテキストファイルを出力する

多くの企業では様々なデータをエクセル形式で保持しています。そのデータ群をCSVやHTMLなどで有効利用できたら便利ですよね?このシリーズでは、エクセルデータをテキストをはじめ様々な形式のファイルに出力する方法についてお伝えしています。
  1. エクセルVBAでテキストファイルに書き出す最も簡単なプログラム
  2. エクセルVBAでエクセルシート上のデータをCSVファイルに書き出す
  3. エクセルの表をHTMLのtableタグに変換して出力するVBAマクロ
  4. エクセルVBAでセルが結合されているかどうか、またそのセルの数を判定する方法
  5. エクセルVBAで文字コードUTF-8のCSVファイルを書き出す方法
  6. エクセルVBAでBOM無しのUTF-8でCSVファイルなどを出力する方法

タイトルとURLをコピーしました