テキスト出力マクロ ができるまで
はじめに
外部ファイルとのやりとりとして、txt形式の読込、出力はよく使います。
今回は少しずつ内容を変えながらテキストを連続して出力する、をテーマにお送りします。
イメージ
まず、こういう
「操作盤」シートがあり、
「フォーマット」シートに文章のひな形を書いておいて、
実行すると
こんな感じで、操作盤に定義したテキストが3つ出来上がる、というイメージです。
クリアすべきポイント
おおざっぱに言うとこんな感じでしょうか。
細かいのが出てきたら、仕方ないからその都度対応する、くらいの心意気で大丈夫です。
テキストファイルを出力する
「vba テキストファイル 出力」あたりで検索すれば色々出てきますね。
最低限の記述だと、
Sub test() Dim filePath As String Dim ff As Long filePath = "c:¥test¥test.txt" ff = FreeFile Open filePath For Output As #ff Print #ff, "テストです" Close #ff End Sub
こんな感じで、cドライブの「test」フォルダの中に「テストです」と書かれた「test.txt」が作成されます。
設定の数だけテキストファイル出力を繰り返す
出力するファイルのパス(フォルダ&ファイル名)があれば、テキストファイルが出力できることがわかりました。
ということで、「操作盤」シートに設定した3つのテキストのパスを出せるようにしてみます。
Sub roopTest() Dim rootPath As String Dim filePath As String Dim maxCol As Long Dim j As Long Sheets("操作盤").Activate rootPath = Range("B1") maxCol = Cells(3, Columns.Count).End(xlToLeft).Column For j = 2 To maxCol filePath = rootPath & "¥" & Cells(3, j) Debug.Print filePath Next End Sub
例によって、最大列をとってfor文で回します。
C:\test\a.txt C:\test\b.txt C:\test\c.txt
イミディエイトウインドウで確認できたところで、ひと段落。