Home » エクセルマクロ・Excel VBAの使い方 » Workbooks・Workbook » Excel VBAでTSV(タブ区切りテキスト)を出力する

Excel VBAでTSV(タブ区切りテキスト)を出力する

動作検証バージョン:Windows 11 Home + 64bit Excel(バージョン2307 ビルド16626.20000 クイック実行)

pandasのDataFrame.to_csv()メソッドで、TSV(タブ区切りテキスト)を出力できることをご紹介しました。

Excel VBAで同様の処理を行うマクロについて触れていなかったので、あらためて記事にしておきます。

[スポンサードリンク]

TSV(タブ区切りテキスト)を出力するサンプルマクロ

以下のExcelマクロを実行すると、アクティブシートが新規ブックに複製されて、その新規ブックがCドライブtempフォルダーにtest.txtとして保存されます。

Sub TSV保存する()
 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(タブ区切りテキスト)を出力する

「Workbooks・Workbook」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.