
仕事でtsvやcsvをエクセルから出したいことがありました。
備忘録として残しておきます。
実際に作ったファイルはこちらからダウンロードできます。
インターフェースファイルを作るときなどにも役立つのでぜひ知っておいてください。
デモンストレーションで動かした動画を載せておきます。
エクセルからファイル出力するコード
コードはこんな感じです。
流れとしては以下です。
①出力対象範囲をを決める
②出力範囲を配列に取得する
③配列からタブ区切りで変数へ格納(区切り文字は「,」でも「|」にもできます)
④タブ区切りにした文字列をファイルへ書き込む
ファイル名は[Output_] + [yyyyMMdd_] + [mmss]
※C直下に「C:\出力先」のように出力先フォルダを作っておいてください。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 |
'====================================================================================================== '目的 :ファイルを出力 '履歴 :#2020/02/14 '====================================================================================================== Sub writeTsv() Dim startRow As Long '読込みする開始行 Dim endRow As Long '読込みする終了行 Dim startCol As Long '読込みする開始列 Dim endCol As Long '読込みする終了行 Dim ws As Worksheet 'シート Dim outputArray As Variant 'tsv出力するデータの配列 Dim tsvFilePath As String 'tsv出力するパス Dim i As Integer 'ループ用変数 Dim j As Long 'ループ用変数 Dim outputText As String '出力テキストを格納 '処理対象のシートをセット Set ws = ThisWorkbook.Worksheets("出力元シート") ws.Activate '出力対象範囲を取得する startCol = 1 '開始列 startRow = 2 '開始行 endCol = Range("A1").End(xlToRight).Column '最終列 endRow = Range("A3").End(xlDown).Row - 1 '最終行 '処理対象の範囲を配列に取得 Set outputArray = ActiveSheet.Range(Cells(startRow, startCol), Cells(endRow, endCol)) '列×行数分ループ For i = 1 To endRow For j = 1 To endCol '最終列かつ最終行に来たら改行 If i = endRow And j = endCol Then outputText = outputText & outputArray(i, j) GoTo NextLoop End If '最終列に来たら改行 If j = endCol Then outputText = outputText & outputArray(i, j) & vbCrLf GoTo NextLoop End If 'タブ区切りで1セルずつ変数へ格納 outputText = outputText & outputArray(i, j) & vbTab NextLoop: Next j Next i 'tsvファイルを書き込み '出力先とファイル名をセット tsvFilePath = "C:\出力先\Output_" & Format(Now, "yyyymmdd_HHMMSS") & ".txt" Open tsvFilePath For Output As #1 Print #1, outputText Close #1 '処理対象のシートをセット Set ws = ThisWorkbook.Worksheets("出力元シート") ws.Activate MsgBox "出力完了" End Sub |
実行結果
「出力」ボタンを実行します。

C:\出力先にファイルが出力されます。

SmoothCsvというツールで表示させています。
こちらからダウンロード可能です。
csvなど他の区切り文字に変える方法
49行目のvbTabを変えて下さい。
1 2 3 4 5 6 7 8 |
'タブ区切り outputText = outputText & outputArray(i, j) & vbTab 'カンマ区切り outputText = outputText & outputArray(i, j) & "," 'パイプ[|]区切り outputText = outputText & outputArray(i, j) & "|" |

おすすめのプログラミングスクール めざせ就職・年収アップ!
プログラミングを独学でされている人は意外と多いです。
ただ、プログラミングの独学は簡単にはいきません。
自分だけの力...



プログラミング初心者の独学方法 文系卒の経験談
私はIT系の会社に勤めて4年目ですが、最初の1年は開発をさせてもらえませんでした。
文系卒でプログラミング経験はなかったの...



プログラミングの独学とはエラーとの闘い
プログラミングを勉強し始めた初心者の方はつまづくことが多いと思います。
私も最初はエラーが出るたびにいちいちビビッて、意味...