pandasのDataFrame.to_csv()メソッドで、TSV(タブ区切りテキスト)を出力できることをご紹介しました。
Excel VBAで同様の処理を行うマクロについて触れていなかったので、あらためて記事にしておきます。
TSV(タブ区切りテキスト)を出力するサンプルマクロ
以下のExcelマクロを実行すると、アクティブシートが新規ブックに複製されて、その新規ブックがCドライブtempフォルダーにtest.txtとして保存されます。
ActiveSheet.Copy
ActiveWorkbook.SaveAs _
"C:\temp\test.txt", _
FileFormat:=xlCurrentPlatformText
End Sub
Worksheet.Copyメソッドで新規ブックにワークシートを複製しておいてから、
ActiveSheet.Copy
その新規ブックをTSVファイルとして保存しています。
ActiveWorkbook.SaveAs _
"C:\temp\test.txt", _
FileFormat:=xlCurrentPlatformText
元のブックからいきなりTSVファイルとして保存を行うと、そのブックがTSVファイルになってしまい、面倒なのでWorksheet.Copyメソッドで新規ブックに複製を行っています。
引数FileFormatに指定する定数はxlTextではなくxlCurrentPlatformTextを
日本語でサンプルを公開してらっしゃる方の多くは、上記の
FileFormat:=xlCurrentPlatformText
の部分を
FileFormat:=xlText
としてらっしゃるようです。
Excelでマクロ記録を行うと、
ActiveWorkbook.SaveAs Filename:="C:\temp\test.txt", FileFormat:=xlText, _
といったコードが作られるためだと思うのですが、私はこのコードを気持ち悪く感じます。
定数xlTextは、あくまでもピボットテーブル用のXlPivotFieldDataType列挙型に定義されている定数であるためです。
※上図はオブジェクトブラウザーで「xlText」を完全一致検索した状態です。
直値が「-4158」ですから、この「FileFormat:=xlText」でも動いてしまうのですが、
XlPivotFieldDataType列挙型に定義されている定数を使うよりも、XlFileFormat列挙型に定義されている定数xlCurrentPlatformTextをつかって「FileFormat:=xlCurrentPlatformText」と指定するほうが、私は適切だろうと感じます。
最終更新日時:2023-07-26 09:01
Home » エクセルマクロ・Excel VBAの使い方 » Workbooks・Workbook » Excel VBAでTSV(タブ区切りテキスト)を出力する